3

我有许多列表:说 list1, list2,.... 和 list 100 和 function myfun。有了这些,我就可以跑了Map(myfun,list1,list2,...,list100)。但是,我想避免写所有列表编号,所以我尝试了Map(myfun,mget(paste0("list",1:100))). 但是,这没有用。下面提供了一个只有三个列表的可重现示例:

x1<-list(1:10,10:20)
x2<-list(0:9,11:20)
x3<-list(100:109,41:50)

Map(rbind,x1,x2,x3) #ok
mget(paste0("x",1:3)) #ok
Map(rbind,mget(paste0("x",1:3))) #ok but the unexpected output

Map(rbind,mget(paste0("x",1:3)))
$x1
     [,1]       [,2]      
[1,] Integer,10 Integer,10

$x2
     [,1]       [,2]      
[1,] Integer,10 Integer,10

$x3
     [,1]       [,2]      
[1,] Integer,10 Integer,10
4

1 回答 1

4

mget返回列表列表(参见“值”?mget下),而不是将每个列表作为单独的向量解析为. 处理它的一种可能方法是将列表返回到其原始元素,然后是它们,例如MapReducerbind

Reduce(function(...) Map(rbind, ...), mget(paste0("x", 1:3)))
于 2015-03-01T20:41:37.707 回答