4

我需要 lapply 依次传递(给函数)存储在向量中的值。

values <- c(10,11,13,10)
lapply(foo,function(x) peakabif(x,npeaks=values))

所以得到:

peakabif(x1,npeaks=10)
peakabif(x2,npeaks=11)
peakabif(x3,npeaks=13)
peakabif(x4,npeaks=10)

这是可能的还是我需要重新考虑使用 lapply ?函数内部的 for 循环会起作用吗?

4

3 回答 3

6

您想为此使用mapplymapply(peakabif, x=foo, npeaks=values)

于 2013-01-10T19:30:23.507 回答
4

有几种方法可以处理这个问题。您可以尝试直接索引向量方法。

lapply(1:length(foo), function(i) peakabif(foo[i], npeaks=values[i]))

(而且有人已经把我打败到了 mapply 版本......)

于 2013-01-10T19:30:56.203 回答
2

有时您可以转换现有函数,使其接受向量(或列表)Vectorize

vrep <- Vectorize(rep.int)
> vrep(list(1:4, 1:5), list(2,3) )
[[1]]
[1] 1 2 3 4 1 2 3 4

[[2]]
 [1] 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5

(在引擎盖下,它实际上是一个方便的包装器,mapply就像它read.table是一个包装器一样scan。)

于 2013-01-10T20:01:08.830 回答