[英]Can someone please explain me this code? especially the role of "function x and [[x]]"?
這是 R 中的代碼,我無法理解這行代碼中function(x)
和qdata[[x]]
作用。 有人可以一點一點地為我詳細說明嗎? 這段代碼不是我寫的。 謝謝
outs=lapply(names(qdata[,12:35]), function(x)
hist(qdata[[x]],data=qdata,main="Histogram of Quality Trait",
xlab=as.character(x),las=1.5)$out)
此代碼生成一系列直方圖,一個用於數據幀 qdata 的第 12 到 35 列中的每一列。 lapply 函數遍歷列。 在每次迭代中,當前列的名稱作為參數“x”傳遞給“function(x)”定義的匿名函數。 該函數的主體是對 hist() 函數的調用,該函數創建直方圖。 qdata[[x]](其中 x 是列的名稱)從該列中提取數據。 我實際上對“data=qdata”感到困惑。
我們沒有名為qdata
的數據對象,因此我們無法確定這段代碼會發生什么。 似乎這段代碼的作者試圖將名為outs
的組件的值從函數調用傳遞給hist
。 如果qdata
是一個普通的數據幀,那么我懷疑這段代碼在那個目標上會失敗,因為hist
函數沒有out
組件。 (看看?hist
的輸出。當我用一個簡單的數據幀運行它時,我確實得到了出現在我的交互式繪圖設備中的直方圖,但我得到了outs
組件的NULL
值。此外,12 個警告是由於缺少hte hist 函數的data
參數。
qdata <- data.frame(a=rnorm(10), b=rnorm(10))
outs=lapply(names(qdata), function(x)
hist(qdata[[x]],data=qdata,main="Histogram of Quality Trait",
xlab=as.character(x),las=1.5)$out)
#There were 12 warnings (use warnings() to see them)
> str(outs)
List of 2
$ : NULL
$ : NULL
所以我覺得我們需要關注一下這段代碼作者的R知識水平。 我可能對這個假設有誤。 hist
函數是通用的,並且某些未引用的包可能具有一個函數,旨在處理數據對象並在傳遞具有特定類的向量時重新運行輸出值。 然而,在僅加載基本包的典型啟動情況下,只有三個 hist.* 函數:
methods(hist)
#[1] hist.Date* hist.default hist.POSIXt*
#see '?methods' for accessing help and source code
關於function
和[[x]]
的作用問題:關鍵字function
返回一個語言對象,可以接收參數值,然后進行操作,最后返回結果。 在這種情況下, names
被傳遞給匿名函數並依次成為本地名稱x
和該值由'[['
- 函數用於在我假設的列中查找列'qdata'-數據幀。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.