我有两个向量,我想要一个矩阵,其中元素是向量1的元素和向量2的元素的总和。
例如,该矩阵的第一行中的第一个元素是向量1的第一个元素和向量2的第一个元素之和;第一行的第二个元素是向量1的第一个元素和向量2的第二个元素的总和,依此类推。
我尝试过:
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[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
有人能帮助我吗?
答案 0 :(得分:6)
这就是你要这样做的(注意矩阵子集不是两个括号,而是以逗号分隔):
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,`+`)
答案 1 :(得分:1)
我们也可以使用sapply
sapply(u, `+`, v)