笔记本电脑的基本信息:
SO: Windows 7 x64
R version 3.0.2 (2013-09-25) -- "Frisbee Sailing"
问题:
当我运行以下代码时:
x <- rnorm (100)
z <- z + rnorm(100)
f <- gl(2,50,labels =c("Groups 1" , "Groups 2"))
xyplot (z ~ x | f,
panel = function (x, z, ...) {
panel.xyplot(x,z, ...)
panel.abline(h = median(z),
lty=2
)
})
我获得的是控制台上没有错误,但也没有图形,而不是图形接收两个空图框,里面有这个错误:
"error using packet 2, argument "z" in missing, with no defaults"
但是在环境中“z”存在且有效!
如果我用y而不是z运行脚本,则按预期运行,将两个图形彼此绘制(代码可以工作)。这里发生了什么?
答案 0 :(得分:3)
面板函数从符号x
传递坐标y
和y ~ x
。因此,您根据这些参数编写面板函数,而不是传递给这些参数的您自己的数据对象的名称。然后它工作:
x <- rnorm (100)
z <- x + rnorm(100)
f <- gl(2,50,labels =c("Groups 1" , "Groups 2"))
df <- data.frame(x = x, z = z, f = f) ## I prefer objects in data frames
xyplot (z ~ x | f, data = df,
panel = function (x, y, ...) {
panel.xyplot(x, y, ...)
panel.abline(h = median(y),
lty=2
)
})