R 将Map与mget一起使用会产生意外的输出

R 将Map与mget一起使用会产生意外的输出,r,mapply,R,Mapply,我有很多列表:比如列表1、列表2……和列表100以及函数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,

我有很多列表:比如列表1、列表2……和列表100以及函数
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

x1
mget
返回列表列表(请参见“值”下的
?mget
),而不是将每个列表作为单独的向量解析到
映射中。一种可能的处理方法是
将列表还原为其原始元素,然后
rbind
它们,类似于

Reduce(function(...) Map(rbind, ...), mget(paste0("x", 1:3)))

mget
返回列表列表,而不是仅使用
x1
等,它们是单个列表对象。您是正确的。有没有包含列表编号的替代方案?可能类似于
Reduce(函数(…)Map(rbind,…),mget(paste0(“x”,1:3))
Perfect。请将此作为答案发布。谢谢.NP,不过可能有更有效的解决方案