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