12

当然,我可以像这样手动命名列表中的对象:

    #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 个长名称的对象,它会做很多工作。那么有什么方法可以自动执行此操作并使列表中的名称与外部对象相同?

4

3 回答 3

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:]]+$")
于 2013-03-13T14:18:34.163 回答
3

如果您只想使用共享某些内容的环境中的名称命名一个列表,在本例中为“df”:

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

如果要将环境推送到列表中:

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

要反转该过程,请参阅?list2env

于 2013-03-13T14:19:02.293 回答
0

正如可能重复的问题的回答中所述:

从 tidyverse,使用tibble:lsthttps ://tibble.tidyverse.org/reference/lst.html

于 2022-02-14T18:01:43.047 回答