当然,我可以手动命名列表中的对象:
#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)
但如果让我说50个长名字的对象,它会做很多工作。 那么有没有办法自动化这个并使列表中的名称与外部对象相同?
答案 0 :(得分:9)
找到姓名,然后拨打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:]]+$")
答案 1 :(得分:3)
如果您只想命名一个包含共享内容的环境名称的列表,在本例中为“df”:
names(list.1) <- grep("df",ls(),value=TRUE)
如果您想将环境推送到列表中:
list.1 <- globalenv()
list.1 <- as.list(list.1)
要撤消此过程,请参阅?list2env