首先创建"行"向量和"列" 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
循环?
感谢您的帮助!
答案 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