我有以下数据框和向量:
dframe <- as.data.frame(matrix(1:9,3))
vector <- c(2,3,4)
我想将dframe
的每一列乘以相应的vector
值。这不会做:
> vector * dframe
V1 V2 V3
1 2 8 14
2 6 15 24
3 12 24 36
dframe
的每个行乘以vector
的相应值,而不是每个列。有没有惯用的解决方案,还是我坚持for
周期?
答案 0 :(得分:4)
以下是使用sweep
sweep(dframe, 2, vector, "*")
# V1 V2 V3
#1 2 12 28
#2 4 15 32
#3 6 18 36
或使用col
dframe*vector[col(dframe)]
答案 1 :(得分:1)
您可以使用Map
:
as.data.frame(Map(`*`, dframe, vector))
# V1 V2 V3
#1 2 12 28
#2 4 15 32
#3 6 18 36