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 に答える