1
这应该是容易的,但我想不出一个更优雅的方式来创建一个附加表,如:如何在R中创建加法表?
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()
各种版本无济于事。
这应该是容易的,但我想不出一个更优雅的方式来创建一个附加表,如:如何在R中创建加法表?
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()
各种版本无济于事。
您可以使用outer
或sapply
或expand.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
你可以这样做:
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
您正在寻找外。 '外部(x,x,'+')' – Sotos
@Sotos,migt是'outer(1:3,1:3,“+”)' –
@ d.b与Sotos所说的不一样吗? –