2013-04-15 8 views
8

データフレームにxyplotを使用していて、(x、y、...)引数ではなくデータの追加の列フレーム(例えば以下の例ではK):データフレーム列をxyplotパネル関数に渡す

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,...) 
       }) 

IはRパネル関数このk個の列を供給していないので、これは、動作しないであろうことを理解します。そうする簡単な方法はありますか?

(私はちょうど私の実際のパネル機能でkでのxを乗算するつもりはないよ。私は...、Kを必要とする別の関数を呼んでいる)

多くの感謝!

答えて

8

これは有用な(ただし多少不明瞭な)引数である。 ?xyplotで「パネル」引数の説明から:

[...]パネル機能は 仮引数として「添字」を持つことができます。どちらの場合でも、 の効果を考慮に入れる前に、パネル関数に渡された 引数は、パネルの関数「」の元のデータの のパネルの「x」と「y」のインデックスです。サブセット '引数。言い換えれば

、現在のパネルにプロットされたデータに対応して、あなたの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件の奇妙な合併症があったことに注意してくださいkという名前xyplot()への引数が原因引数の部分一致に、keyとして解釈されます防ぐために。それはパネル関数にそのまま渡されるように関連する引数にKという名前を付けました)

+0

+1!添え字の良いイラスト! – agstudy

関連する問題