将向量的所有元素乘以R中for循环中的每个元素
我有一个向量(x),我想乘以一个标量。我希望整个x向量乘以每个标量值 以下是我想要的结果示例:将向量的所有元素乘以R中for循环中的每个元素,r,for-loop,scalar,R,For Loop,Scalar,我有一个向量(x),我想乘以一个标量。我希望整个x向量乘以每个标量值 以下是我想要的结果示例: x <- c(1, 2, 3, 4, 5, 6, 7, 8, 9, 10) scalar <- c(1.2, 1.4, 1.6, 1,7, 1.8, 1.9, 2.0) x times 1.2 <- c(1.2, 2.4, 3.6, 4.8, 6, 7.2, 8.4, 9.6, 10.8, 12) x你可以做 #Initialize matrix m = matrix(d
x <- c(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
scalar <- c(1.2, 1.4, 1.6, 1,7, 1.8, 1.9, 2.0)
x times 1.2 <- c(1.2, 2.4, 3.6, 4.8, 6, 7.2, 8.4, 9.6, 10.8, 12)
x你可以做
#Initialize matrix
m = matrix(data = 0, nrow = length(x), ncol = length(scalar),
dimnames = list(x = x, scalar = scalar), )
#Fill in values
for(i in seq_along(x)){
for (j in seq_along(scalar)){
m[i, j] = x[i] * scalar[j]
}
}
m
# scalar
#x 1.2 1.4 1.6 1 7 1.8 1.9 2
# 1 1.2 1.4 1.6 1 7 1.8 1.9 2
# 2 2.4 2.8 3.2 2 14 3.6 3.8 4
# 3 3.6 4.2 4.8 3 21 5.4 5.7 6
# 4 4.8 5.6 6.4 4 28 7.2 7.6 8
# 5 6.0 7.0 8.0 5 35 9.0 9.5 10
# 6 7.2 8.4 9.6 6 42 10.8 11.4 12
# 7 8.4 9.8 11.2 7 49 12.6 13.3 14
# 8 9.6 11.2 12.8 8 56 14.4 15.2 16
# 9 10.8 12.6 14.4 9 63 16.2 17.1 18
# 10 12.0 14.0 16.0 10 70 18.0 19.0 20
当然,还有其他使用内置函数的方法,例如
sapply(scalar, function(v1) sapply(x, function(v2) v1 * v2))
带有outer
的选项,其中默认的FUN
是*
。根据?outer
,用法为
外部(X,Y,FUN=“*”,…)
您可能需要外部(x,标量)
这正是我需要的。非常简单,谢谢。外部函数似乎正是我需要的,谢谢你的回答。sapply
不是sapply(scalar,
*,x)
sapply(scalar, function(v1) sapply(x, function(v2) v1 * v2))
outer(x, scalar)