使用对象名称作为R中的列表名称

问题描述:

当然,我可以在我的列表中的所有手动命名对象是这样的:如果我假设名称很长的50个对象使用对象名称作为R中的列表名称

#create dfs 
    df1<-data.frame(a=sample(1:50,10),b=sample(1:50,10),c=sample(1:50,10)) 
    df2<-data.frame(a=sample(1:50,9),b=sample(1:50,9),c=sample(1:50,9)) 
    df3<-data.frame(a=sample(1:50,8),b=sample(1:50,8),c=sample(1:50,8)) 

    #make them a list 
    list.1<-list(df1=df1,df2=df2,df3=df3) 

但它使大量的工作。 那么有没有什么办法可以使这个自动化,并使列表中的名称与外部对象相同?

查找名称,然后致电mget
如果每个变量的名称都有一个模式,那么这很简单。

var_names <- paste0("df", 1:3) 
mget(var_names, envir = globalenv()) #or maybe envir = parent.frame() 

如果命名系统更加复杂,你可以使用正则表达式来找到它们,使用类似

var_names <- ls(envir = globalenv(), pattern = "^df[[:digit:]]+$") 
+0

+1 MGET我总是忘了一个 – 2013-03-13 14:19:29

+0

,使得它。谢谢! – Joschi 2013-03-13 15:30:06

如果你只是想说出从环境中分享一些名称的列表在这种情况下, 'df,可以':

names(list.1) <- grep("df",ls(),value=TRUE) 

如果你想你的环境推入一个列表:

list.1 <- globalenv() 
list.1 <- as.list(list.1) 

的逆过程看?list2env

+1

感谢10k! – 2013-03-13 22:22:27