列出命名的数据帧

时间:2014-07-27 07:13:37

标签: r list dataframe naming

构建两个数据帧
df1<-data.frame(1,2)
df2<-data.frame(3,4)

并列出

list<-list(df1,df2)

然后,数据帧的名称未导入列表。但是,如果代码更改为

,则会显示其名称
list<-list(df1=df1,df2=df2)

但是,当我构建包含数百个数据帧(从Quandl导入)的列表时,这意味着需要进行大量的其他输入。有更优雅的解决方案吗?

2 个答案:

答案 0 :(得分:2)

mget在其第一个参数中找到作为字符向量给出的对象,并返回一个命名列表。您可以提供所需对象名称的字符向量,也可以使用ls()使用正则表达式 Global Environment <中选择所需的对象/ em>(默认情况下,您可以为mget指定其他环境以查找对象:

mget(c("df1","df2"))
#$df1
#  X1 X2
#1  1  2

#$df2
#  X3 X4
#1  3  4

使用正则表达式似乎非常适合您有数百data.frames ...

的情况
mget( ls( pattern = "df[0-9]+" ) )
#$df1
#  X1 X2
#1  1  2

#$df2
#  X3 X4
#1  3  4

答案 1 :(得分:0)

这是一种适用于长列表的方式。

> q <- quote(list(df1, df2))
> setNames(eval(q), as.character(q[-1]))
# $df1
#   X1 X2
# 1  1  2
#
# $df2
#   X3 X4
# 1  3  4

q是一种无价值的表达方式。当我们在其上调用eval时,它会被评估,我们可以将表达式转换为字符向量来获取名称。 setNames很适合将名称应用于列表,因为它返回命名列表作为结果。

> q
# list(df1, df2)
> as.character(q)
# [1] "list" "df1"  "df2"