我有一个带有变量test1
,test2
,test3
,test4
,.. testn
的R工作区。这些变量都是相同长度的列表。我想使用mapply()
合并这些列表,如以下示例所示:
test_matrix=mapply(c, test1, test2,..testn)
如何对以
"test"
开头的所有变量执行此操作,并按test1
,test2
,.. testn
的顺序执行? 最佳答案
要准确回答OP的要求(mapply(c, test1, test2,..testn)
),请执行以下操作:
do.call(mapply, c(FUN = c, mget(paste0("test", 1:n))))
如果您不知道您有多少(
n
)个列表,并想使用某种模式找到它们:do.call(mapply, c(FUN = c, mget(ls(pattern = "^test\\d+$"))))
像到目前为止的其他答案一样,如果对象多于9个,则使用
ls
的方法将无法正确对对象进行排序,因为它们是按字母顺序排序的。较长但完全健壮的版本为:test.lists <- ls(pattern = "^test\\d+$")
ordered.lists <- test.lists[order(as.integer(sub("test", "", test.lists)))]
do.call(mapply, c(FUN = c, mget(ordered.lists)))