2016-11-25 37 views
1

这个代码我在书中看到:面板参数如何在R中工作?

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'是任何与面板参数最初调用相关的函数? (在这种情况下,函数“function(x,y,...)”)

奖金问题:R如何知道打包到“...”参数中的内容?

回答

1

我会说你基本上是正确的。这个实例中的面板参数是一个函数,它指定接受两个命名参数xy,并且可能接受点列表中任何进一步命名的参数(但只有当它们的名称与特定面板函数的名称完全匹配时才可以)。查找了一下命名参数可以通过访问帮助页面,panel.xyplotpanel.curve得到赋值。

在这种情况下,你也有公式中的波浪的LHS两个名字,所以在panel.xyploty每个实例函数将获得两次向量,一次为y,作为lower,一次为upper .调用不会获得这些额外的值,因为我s参数列表中没有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") 

所以您可以添加任何这些参数,无论是“类型”到“水平”的命名还是位置匹配,但仅限于“...”后面的命名,并且它们将在panel.xyplot函数调用中匹配。尝试在数据参数逗号后面加上col=c("darkred", "orange"),

还花时间检阅?Lattice页面。

+0

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