8

データ フレームで xyplot を使用しており、パネル関数に (x,y, ...) 引数ではなく、データ フレームの追加の列 (以下の例では k とします) のデータをフィードしたいと考えています。

library(lattice)

mydata <- data.frame(xxx = 1:20,
                     yyy = rbinom(20,20,.5),
                     uuu = gl(2,10),
                     k = rnorm(20))

xyplot( formula = yyy ~ xxx | uuu, data = mydata,
        panel = function(x,y,k, ...){
                n <- x * k
                panel.xyplot(n,y,...)
                })

Rはこのk列をパネル関数にフィードしないため、これが機能しないことを理解しています。そうする簡単な方法はありますか?

(実際のパネル関数で x を k で乗算しようとしているわけではありません。k を必要とする別の関数を呼び出しています...)

どうもありがとう!

4

1 に答える 1

8

これが、有用な (しかしややあいまいな)subscripts議論の目的です。の「パネル」引数の説明から?xyplot:

[...] パネル関数は、正式な引数として「添え字」を持つことができます。いずれの場合も、パネル関数に渡される「添え字」引数は、「サブセット」引数の影響を考慮する前に、元の「データ」内のそのパネルの「x」および「y」データのインデックスです。

つまり、「subscripts」という名前の正式な引数dataには、現在のパネルにプロットされているデータに対応する引数の行番号が含まれます。これは、値の目的のサブセットを選択するために必要なものですk

あなたの場合、次のようにします。

xyplot(yyy ~ xxx | uuu, data = mydata, K = mydata$k, pch=16, 
       panel = function(x,y,K, ..., subscripts){
                   n <- x * K[subscripts]
                   panel.xyplot(n,y,...)
               })

(このアプリケーションには奇妙な複雑さが 1 つあったことに注意してください。named への引数は、引数の部分的な一致により、として解釈されます。それを防ぐために、関連する引数にxyplot()名前を付けて、パネル関数にそのまま渡されるようにしました。 .)kkeyK

于 2013-04-15T17:57:05.993 に答える