我有一组名为gof_1_1
,gof_1_2
,.....,gof_1_24
的矩阵。我想将它们全部组合到列中的一个矩阵中。所以我使用以下代码
do.call(cbind,mget(ls(pattern = paste("gof",1,"[0-9]",sep="_"), globalenv())))
它结合了矩阵,但问题是它们不在一个顺序中。他们就像这样gof_1_1
,gof_1_11
,gof_1_12
,.....,gof_1_19
,gof_1_2
,gof_1_21
等等。所以我编辑了ls()
,如下所示
ls(pattern = paste("gof",1,"[0-9][0-9]",sep="_"),globalenv())
现在它按顺序排列,但它从gof_1_10
开始到gof_1_25
。缺少gof_1_1
至gof_1_9
。知道如何编辑上面的一个按顺序调用所有矩阵吗?
答案 0 :(得分:3)
你可以这样做:
do.call(cbind, mget(paste0("gof_1_", 1:24)))
否则,更复杂的事情如下:
mat.names <- ls(pattern = paste("gof", 1, "[0-9]", sep="_"), globalenv())
mat.idx <- as.integer(gsub(".*_", "", mat.names))
sorted.names <- mat.names[order(mat.idx)]
do.call(cbind, mget(sorted.names))
答案 1 :(得分:2)
paste0函数的替代方法:
do.call(cbind, mget(sprintf("gof_1_%s", 1:24)))