2016-11-25 74 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