将向量的所有元素乘以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)
我有一个向量 (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)