R 创建值等于行和列索引函数的矩阵

R 创建值等于行和列索引函数的矩阵,r,R,我试图创建一个6x6矩阵,其单元格值等于行索引和列索引之和。我可以使用循环来实现这一点,但我想知道是否有一种方法可以使用向量函数来实现这一点。使用带“+”的外部函数: 顺便说一句,这基本上是以下矢量化方法的捷径: matrix(rep(1:6, 6) + rep(1:6, each = 6), nrow = 6) 还有一种可能性: m <- matrix(NA,6,6) m <- col(m)+row(m) # [,1] [,2] [,3] [,4] [,5] [,6] #

我试图创建一个6x6矩阵,其单元格值等于行索引和列索引之和。我可以使用循环来实现这一点,但我想知道是否有一种方法可以使用向量函数来实现这一点。

使用带“+”的
外部
函数:

顺便说一句,这基本上是以下矢量化方法的捷径:

matrix(rep(1:6, 6) + rep(1:6, each = 6), nrow = 6)

还有一种可能性:

m <- matrix(NA,6,6)
m <- col(m)+row(m)
#     [,1] [,2] [,3] [,4] [,5] [,6]
#[1,]    2    3    4    5    6    7
#[2,]    3    4    5    6    7    8
#[3,]    4    5    6    7    8    9
#[4,]    5    6    7    8    9   10
#[5,]    6    7    8    9   10   11
#[6,]    7    8    9   10   11   12

我更喜欢第一个。我脑子里想不出我在做交叉连接。有时候,术语会碍事。@NickLarsen R中的“交叉连接”方法将使用
expand.grid
,例如
expand.grid(x=1:6,y=1:6)%%>%mutate(total=x+y)
,并将返回36行df而不是6x6矩阵。有趣的是,tidyr现在有一个
交叉
函数,它的工作原理类似于
expand.grid
,但返回一个
tbl_df
m <- matrix(NA,6,6)
m <- col(m)+row(m)
#     [,1] [,2] [,3] [,4] [,5] [,6]
#[1,]    2    3    4    5    6    7
#[2,]    3    4    5    6    7    8
#[3,]    4    5    6    7    8    9
#[4,]    5    6    7    8    9   10
#[5,]    6    7    8    9   10   11
#[6,]    7    8    9   10   11   12