你不需要在这里一环。您可以使用rownames
函数按如下方式设置矩阵的行名称。
paste(rep(1:2, each = 5), "x", 1:5)
# [1] "1 x 1" "1 x 2" "1 x 3" "1 x 4" "1 x 5"
# [2] "2 x 1" "2 x 2" "2 x 3" "2 x 4" "2 x 5"
...或者你的具体的例子:
paste(rep(1:215, each = 430), "x", 1:430)[1:92235]
一般来说,你可以使用
mat <- matrix(1:4)
rownames(mat)
# NULL
rownames(mat) <- c("row1", "row2", "row3", "row4")
mat
# [,1]
# [1,] 1
# [2,] 2
# [3,] 3
# [4,] 4
rownames(mat) <- c("row1", "row2", "row3", "row4")
mat
# [,1]
# row1 1
# row2 2
# row3 3
# row4 4
可以使用的rep
和paste
组合创建自定义行名公式:
paste(rep(1:ceiling(nrow(mat)/n), each = n), "x", 1:n)[1:nrow(mat)]
其中n
是您希望重复第一个号码的次数。
编辑基于COMMENT
要获得行名不包括“2×1”,一种方法是使用expand.grid
:
library(data.table)
tmp <- as.data.table(expand.grid(1:2, 1:5))
tmp <- tmp[Var2 > Var1][order(Var1)]
paste(tmp$Var1, "x", tmp$Var2)
# [1] "1 x 2" "1 x 3" "1 x 4" "1 x 5"
# [2] "2 x 3" "2 x 4" "2 x 5"
很高兴有一个例子,我们可以<一起工作,像'垫子 - 矩阵(1:4)'在戴恩的回答。这里有一些关于询问的一般建议:http://stackoverflow.com/q/5963269/1191259 – Frank
错误发生是因为当'i = 430'时它开始在'from = i + 1 = 431'处开始计数'j'大于'to = 430'。我认为你的意思是'我'只能走'1:429' – Frank