我在数据框上使用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的函数...)
非常感谢!
答案 0 :(得分: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,...)
})
(请注意,此应用程序中存在一个奇怪的复杂问题。由于参数的部分匹配,名为xyplot()
的{{1}}的参数将被解释为k
。为了防止这种情况,我将相关参数命名为key
,以便它可以完整地传递给面板函数。)