如何在R中创建附加表?

时间:2017-04-19 22:47:25

标签: r matrix vector

这应该很简单,但我不能想出一种更优雅的方式来创建一个附加表,例如:

x <- 1:3
cbind(x + x[1], x + x[2], x + x[3])

     [,1] [,2] [,3]
[1,]    2    3    4
[2,]    3    4    5
[3,]    4    5    6

我尝试了各种版本的lapply()无济于事。

2 个答案:

答案 0 :(得分:3)

您可以使用outersapplyexpand.grid(与rowSums结合使用)

x = 1:3
outer(x, x, "+")
#     [,1] [,2] [,3]
#[1,]    2    3    4
#[2,]    3    4    5
#[3,]    4    5    6

sapply(seq_along(x), function(i) sapply(seq_along(x), function(j) x[i]+x[j]))
#     [,1] [,2] [,3]
#[1,]    2    3    4
#[2,]    3    4    5
#[3,]    4    5    6

matrix(rowSums(expand.grid(x, x)), ncol = length(x))
#     [,1] [,2] [,3]
#[1,]    2    3    4
#[2,]    3    4    5
#[3,]    4    5    6

答案 1 :(得分:2)

你可以这样做:

m <- diag(length(x))
m[] <- x[col(m)] + x[row(m)]

#     [,1] [,2] [,3]
#[1,]    2    3    4
#[2,]    3    4    5
#[3,]    4    5    6

OR

matrix(x,length(x),length(x),byrow = TRUE) + x