将向量的所有元素乘以R中for循环中的每个元素

Multiplying all elements of a vector by each element in a for loop in R

我有一个向量 (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)

我的最终结果应该是 7 个新的 vectors/columns,其中包含 x * 1.2 的每个元素,x * 1.4 的每个元素,依此类推。

我尝试使用以下方法:

 for(i in seq(from=1, to=2, by=0.2))

     score <- x * i

但这只会将 x 个元素乘以 2.0。

欢迎就如何实现这一目标提出任何建议。

你可以

#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,用法是

outer(X, Y, FUN = "*", ...)

outer(x, scalar)