4
我正在閱讀Wickham的高級R書。這個問題涉及解決第12章中的問題5 - 功能。練習要求我們執行以下操作:lapply中的匿名函數
實施一個版本的
lapply()
,該版本爲FUN提供每個組件的名稱和值。
現在,當我運行下面的代碼時,我得到了一列的預期答案。
c(class(iris[1]),names(iris[1]))
輸出是:在上面的代碼
"data.frame" "Sepal.Length"
大廈,這裏就是我所做的:
lapply(iris,function(x){c(class(x),names(x))})
但是,我只能從class(x)
而不是從names(x)
得到的輸出。爲什麼會這樣?
我也試過paste()
看它是否有效。
lapply(iris,function(x){paste(class(x),names(x),sep = " ")})
我只在輸出中得到class(x)
。我沒有看到names(x)
正在退回。
爲什麼會出現這種情況?另外,我該如何解決它?
有人可以幫我嗎?
矢量沒有'names'屬性。比較名稱(iris [1])和名稱(iris [,1])'(第一個是數據幀,而第二個是矢量)。如果你給它一些有意義的東西,比如'lapply(iris,function(x){c(class(x),length(x))})',你的函數就可以工作。此外,SO的目標是創建一個知識數據庫,以幫助未來的讀者,而不僅僅是你。因此,諸如「祕密花園中的神祕功能」這樣的標題是不可搜索的,因此對除了你自己以外的任何人都沒有幫助。 –
@David。謝謝。我確實改變了標題。我對此表示歉意。無論如何,我可以獲得個人專欄名稱嗎?我會很感激你的幫助。 – watchtower
@DavidArenburg「一個向量沒有名字屬性。」在這個例子中沒有,但是vector *可以具有'names'屬性:'setNames(1:3,letters [1:3])'。 – Roland