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

Jos*_*chi 8 naming r list

当然,我可以手动命名列表中的对象,如下所示:

    #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)
Run Code Online (Sandbox Code Playgroud)

但如果让我说50个具有长名称的对象,它会做很多工作.那么有没有办法自动化这个并使列表中的名称与外部对象相同?

Ric*_*ton 9

找到名字,然后打电话mget.
如果每个变量的名称都有一个模式,那么这很简单.

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

如果命名系统更复杂,您可以使用正则表达式来查找它们,使用类似的方法

var_names <- ls(envir = globalenv(), pattern = "^df[[:digit:]]+$")
Run Code Online (Sandbox Code Playgroud)