panel参数在R中是如何工作的?

panel参数在R中是如何工作的?,r,graph,R,Graph,这是我在书中看到的代码: print(xyplot(lower + upper ~ x, data=NPL.bands(dataset$variable), panel = function(x,y,...) { panel.xyplot(x,y,...) panel.curve(pnorm(x,7.22,1.14), lwd=1.5) })) 因此,我开始阅读以下内容: 绘制该数据集置信区间的上限和下限 但在那之后,我感到困惑。我知道面板

这是我在书中看到的代码:

print(xyplot(lower + upper ~ x, data=NPL.bands(dataset$variable),
    panel = function(x,y,...) {
         panel.xyplot(x,y,...)
         panel.curve(pnorm(x,7.22,1.14), lwd=1.5)
     }))
因此,我开始阅读以下内容: 绘制该数据集置信区间的上限和下限

但在那之后,我感到困惑。我知道面板功能可以对面板中的任何内容进行更专门的更改

代码似乎说“我们在这个面板中放置了一个xy函数,将通过xyplot函数调用,它将是一条带有以下参数的曲线”

我假设一旦调用面板参数,就可以执行panel.X,其中“X”是与面板参数最初调用的内容相关的任何函数,对吗?(在这种情况下,函数“函数(x,y,…)”)


附加问题:R如何知道在“…”参数中包含什么?

我想你基本上是正确的。此实例中的panel参数是一个指定用于接受两个命名参数的函数,
x
y
,并可能接受dots列表中的任何其他命名参数(但前提是它们的名称与特定面板函数的名称完全匹配。您可以通过转到
panel.xyplot
panel.curve
的帮助页面,查找哪些命名参数可能会获得指定值

在本例中,公式中的波浪线左侧有两个名称,因此
面板中
y
的每个实例.xyplot
函数将获得两次传递向量,一次使用
y
作为
,一次作为
面板.curve
调用不会获得这些额外值,因为re在其参数列表中为no
y

我假设这个NPL.band函数来自软件包SMIR,并且您的数据参数如下所示:

str( NPL.bands(y) )
#
List of 3
 $ x    : num [1:44] 0 3 4 5 6 7 8 9 10 11 ...
 $ lower: num [1:44] 0.000362 0.004418 0.011527 0.030885 0.054412 ...
 $ upper: num [1:44] 0.0996 0.1327 0.1627 0.2176 0.2683 ...
查看?panel.xyplot,我们可以看到:

panel.xyplot(x, y, type = "p",
             groups = NULL,
             pch, col, col.line, col.symbol,
             font, fontfamily, fontface,
             lty, cex, fill, lwd,
             horizontal = FALSE, ...,
             grid = FALSE, abline = NULL,
             jitter.x = FALSE, jitter.y = FALSE,
             factor = 0.5, amount = NULL,
             identifier = "xyplot")
因此,您可以添加这些参数中的任何一个,通过“水平”为“类型”命名或位置匹配,但仅为后面的参数在“…”之后命名,并且它们将在
面板.xyplot
函数调用中匹配。请尝试在数据参数逗号之后添加
col=c(“darkred”,“orange”),


另外,请花时间查看
?Lattice
页面。

非常感谢-这非常有帮助。