2013-04-15 67 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,...) 
       }) 

我明白,這是行不通的,因爲R不此k個列饋送到面板功能。有沒有簡單的方法來做到這一點?

(我並不想只是被K在我的實際面板功能乘以X我打電話,要求ķ其他功能...)

非常感謝!

回答

8

這是什麼有用的(但有點模糊)subscripts論點是。從「面板」的說法在?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,...) 
       }) 

(請注意,在這個應用程序一個奇怪的併發症,以xyplot()命名k將得到解釋爲key,由於參數部分匹配的參數防止。我命名相關的論點K,以便它可以完整地傳遞給面板功能。)

+0

+1!下標的好例證! – agstudy