lapply
函數的工作原理存在根本性問題。我想分類列表中每個向量的每個成員。更改列表中的每個向量
我的列表:
s <- list(
a = c(1, 20, 300),
b = c(1.1, 20.1, 300.1),
c = c(1.2, 20.2, 300.3)
)
我的分類功能:
classify <- function(n, peaks){
which(abs(peaks-n)==min(abs(peaks-n)))
}
我峯:
peaks <- c(1.27350, 20.32662, 300.02650)
如果本身我classify
US $ C,我得到的結果,我期望:
> sapply(s$c,classify,peaks)
[1] 1 2 3
但是當我嘗試所有的向量一次分類,我得到這個:
> lapply(s,classify,peaks)
$a
[1] 3 //should be 1,2,3
$b
[1] 3 //should be 1,2,3
$c
[1] 1 //should be 1,2,3
爲什麼我收到,我這樣做的結果?我如何得到我想要的結果?
裏奇有一些很好的評論。我仍然在努力理解爲什麼'1,2,3'是你期望的結果。 'classify'旨在接受'n'和'peaks'的矢量嗎? – joran 2012-01-30 16:24:06
'n'應該只是一個數字。我原以爲'lapply(S,分類,峯值)'會爲我想,因爲單曲<-lapply(s_as_text,as.integer)' 「numericized」 s_as_text來的工作。 – dnagirl 2012-01-30 17:05:20