按名称组合矩阵

时间:2014-03-27 09:11:09

标签: r ls

我有一组名为gof_1_1gof_1_2,.....,gof_1_24的矩阵。我想将它们全部组合到列中的一个矩阵中。所以我使用以下代码

do.call(cbind,mget(ls(pattern = paste("gof",1,"[0-9]",sep="_"), globalenv())))

它结合了矩阵,但问题是它们不在一个顺序中。他们就像这样gof_1_1gof_1_11gof_1_12,.....,gof_1_19gof_1_2gof_1_21等等。所以我编辑了ls(),如下所示

ls(pattern = paste("gof",1,"[0-9][0-9]",sep="_"),globalenv())

现在它按顺序排列,但它从gof_1_10开始到gof_1_25。缺少gof_1_1gof_1_9。知道如何编辑上面的一个按顺序调用所有矩阵吗?

2 个答案:

答案 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)))