R 创建值等于行和列索引函数的矩阵
我试图创建一个6x6矩阵,其单元格值等于行索引和列索引之和。我可以使用循环来实现这一点,但我想知道是否有一种方法可以使用向量函数来实现这一点。使用带“+”的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] #
外部
函数:
顺便说一句,这基本上是以下矢量化方法的捷径:
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