2 つのベクトルが与えられ、a
とb
. ベクトルには、さまざまなシーケンスの始点 (a) と終点 (b) が含まれています。これらのシーケンスは、ターゲット ベクターで 1000 に設定する必要がありますvec
。mapply
この目的で使用しようとしていますが、結果は期待どおりではありません。
a <- c(2,10,15)
b <- c(4,13,18)
vec <- sample(1:18,18)
mapply(function(a, b){
vec[a:b] <- 1000; vec
},a,b)
別のスレッドから実行できることはわかっていますが、この場合、意図したとおりに機能しない理由vec[unlist(Map(":", a, b))] <- 1000
について詳しく知りたいです。mapply
結果は、ベクトルではなくマトリックスの形式になります。つまり、変更は元のベクトルには保存されません。これはどのように行うことができますか?おそらく簡単な修正です(ただし、ドキュメントや他の場所では何もわかりません)
[,1] [,2] [,3]
[1,] 13 13 13
[2,] 1000 2 2
[3,] 1000 17 17
[4,] 1000 12 12
[5,] 14 14 14
[6,] 9 9 9
[7,] 16 16 16
[8,] 4 4 4
[9,] 15 15 15
[10,] 18 1000 18
[11,] 6 1000 6
[12,] 3 1000 3
[13,] 11 1000 11
[14,] 1 1 1
[15,] 10 10 1000
[16,] 7 7 1000
[17,] 5 5 1000
[18,] 8 8 1000