R从“行”向量和“列”向量上的操作创建矩阵

时间:2014-05-24 07:27:51

标签: r vector transpose

首先创建"行"向量和"列" R中的向量:

> row.vector <- seq(from = 1, length = 4, by = 1)
> col.vector <- {t(seq(from = 1, length = 3, by = 2))}

由此我想通过例如将行向量中的每个值与列向量中的每个值相乘来创建矩阵,从而仅从这两个向量创建:

     [,1] [,2] [,3]
[1,]    1    3    5
[2,]    2    6   10
[3,]    3    9   15
[4,]    4   12   20

可以使用apply()以某种方式完成吗? sweep()? ...... for循环?

感谢您的帮助!

3 个答案:

答案 0 :(得分:1)

这是使用apply实现目标的方法。您有没有使用matrix

的原因
> apply(col.vector, 2, function(x) row.vector * x)
##      [,1] [,2] [,3]
## [1,]    1    3    5
## [2,]    2    6   10
## [3,]    3    9   15
## [4,]    4   12   20

答案 1 :(得分:1)

你最好使用两个实际向量,而不是向量和矩阵:

outer(row.vector,as.vector(col.vector))

#     [,1] [,2] [,3]
#[1,]    1    3    5
#[2,]    2    6   10
#[3,]    3    9   15
#[4,]    4   12   20

答案 2 :(得分:1)

简单矩阵乘法可以正常工作

row.vector %*% col.vector
#      [,1] [,2] [,3]
# [1,]    1    3    5
# [2,]    2    6   10
# [3,]    3    9   15
# [4,]    4   12   20