0

10 個のベクトル (v_1 から v_10 まで) があり、それらすべてに別のベクトル v_mult を乗算する必要があります (つまり、v_1*v_mult、v_2*v_mult など)。forループ内でこの問題を解決するにはどうすればよいですか? それはより大きな分析の一部であるため、ループソリューション(私は見つけられません)に固執しています。

v_10<-c(2, 3, 5, 8)
v_20<-c(3, 9, 0, 1)
v_30<-c(15, 9, 6, 0)
v_40<-c(4, 9, 6, 1)
v_50<-c(1, 7, 3, 9)
v_60<-c(5, 9, 5, 1)
v_70<-c(5, 8, 2, 6)
v_80<-c(5, 8, 1, 6)
v_90<-c(5, 0, 1, 6)
v_10<-c(2, 8, 1, 0)

v_mult<-c(8, 5, 1, 9)
4

2 に答える 2

0

usingですべてのベクトル オブジェクトを取得し、の各要素を 'v_mult' usinglistで乗算できます。mgetlistMap

Map('*',mget(paste('v', seq(10, 100, by=10), sep="_")), list(v_mult))

または、オーバーヘッドがないため、 which setfromを使用すると非常に高速になります。data.table.[data.table

library(data.table)
DT <- setDT(mget(paste('v', seq(10, 100, by=10), sep="_")))
for(j in seq_along(DT)){
  set(DT, i=NULL, j= j, value= DT[[j]]*v_mult)
}
于 2015-10-28T12:49:42.947 に答える