这是我在书中看到的代码:
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如何知道将什么打包到" ..."参数
答案 0 :(得分:1)
我说你基本上是正确的。此实例中的panel参数是指定接受两个命名参数x
和y
的函数,并且可能接受点列表中的任何其他命名参数(但前提是它们的名称与这些参数完全匹配)特定面板功能。您可以转到panel.xyplot
和panel.curve
的帮助页面,查找命名参数可能获得的值。
在这个例子中,公式中波形符的LHS上也有两个名称,因此y
函数中panel.xyplot
的每个实例都将传递两次向量,一次用{{1} } y
和lower
一次。 upper
调用不会获得这些额外值,因为其参数列表中没有panel.curve
。
我假设这个NPL.band函数来自SMIR包,你的数据参数类似于:
y
看看?panel.xyplot,我们看到:
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(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")
函数调用内匹配。尝试在数据参数逗号后面添加panel.xyplot
。
另请花点时间查看col=c("darkred", "orange"),
页面。