我需要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循环是否有效?
答案 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.table
是scan
的包装器一样。)