我有两个向量,我想要一个矩阵,其中元素是向量 1 的每个元素和向量 2 的每个元素的总和。
例如,这个矩阵第一行的第一个元素是向量1的第一个元素和向量2的第一个元素之和;第一行的第二个元素是向量 1 的第一个元素和向量 2 的第二个元素之和,以此类推。
例如,用这两个向量
u <- c(1,2,3)
v <- c(4,5,6)
期望的结果是:
# [,1] [,2] [,3]
# [1,] 5 6 7
# [2,] 6 7 8
# [3,] 7 8 9
我尝试过的:
A <- matrix( c(1:6), 3, 3 )
for(i in 1:3)
{
for(j in 1:3)
{
A[j][i] <- u[i]+v[j]
}
}
但我收到了一些警告:
Warning messages:
1: In A[j][i] <- u[i] + v[j] :
number of items to replace is not a multiple of replacement length
2: In A[j][i] <- u[i] + v[j] :
number of items to replace is not a multiple of replacement length
3: In A[j][i] <- u[i] + v[j] :
number of items to replace is not a multiple of replacement length
4: In A[j][i] <- u[i] + v[j] :
number of items to replace is not a multiple of replacement length
5: In A[j][i] <- u[i] + v[j] :
number of items to replace is not a multiple of replacement length
6: In A[j][i] <- u[i] + v[j] :
number of items to replace is not a multiple of replacement length
谁能帮帮我?
最佳答案
你会这样做(注意矩阵子集不是两个括号,而是逗号分隔):
u <- c(1,2,3)
v <- c(4,5,6)
A <- matrix( c(1:6), 3, 3 )
for(i in 1:3)
{
for(j in 1:3)
{
A[i,j] <- u[i]+v[j]
}
}
但这不是了解 R 的人会采用的方式。一般来说,在 R 中,有比嵌套 for 循环更好的方法来做事。另一种方法是:
A <- outer(u,v,`+`)
关于r - 将向量的每个元素与第二个向量的每个元素相加,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12407695/