格子图中有些奇怪

时间:2014-01-22 21:19:46

标签: r lattice

笔记本电脑的基本信息:

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运行脚本,则按预期运行,将两个图形彼此绘制(代码可以工作)。这里发生了什么?

1 个答案:

答案 0 :(得分:3)

面板函数从符号x传递坐标yy ~ 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
                   )
    })