几个向量的乘法

时间:2015-10-28 12:42:17

标签: r loops vector vector-multiplication

我有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)

2 个答案:

答案 0 :(得分:1)

这些载体应该一起放在一个矩阵中:

vlist <- mget(ls(pattern = "v_[[:digit:]*]"))
m <- do.call(cbind, vlist)
m * v_mult
#     v_10 v_20 v_30 v_40 v_50 v_60 v_70 v_80 v_90
#[1,]   16   24  120   32    8   40   40   40   40
#[2,]   40   45   45   45   35   45   40   40    0
#[3,]    1    0    6    6    3    5    2    1    1
#[4,]    0    9    0    9   81    9   54   54   54

您当然可以使用列子集来从矩阵中提取每个向量,例如m[, "v_10"]m[, 1]

答案 1 :(得分:0)

我们可以使用listmget中获取所有向量对象,并将list的每个元素与&#39; v_mult&#39;相乘。使用Map

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

或者使用来自set的{​​{1}},这会非常快,因为它没有data.table开销。

.[data.table