可以连续地lapply传递(到函数)存储在向量中的值

时间:2013-01-10 19:25:26

标签: r lapply

我需要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循环是否有效?

3 个答案:

答案 0 :(得分:6)

您希望mapply使用mapply(peakabif, x=foo, npeaks=values)

答案 1 :(得分:4)

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

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

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

答案 2 :(得分: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.tablescan的包装器一样。)