有没有办法通过命名列表绑定多个数据框?

Is there a way to bind multiple dataframes by a named list?

如果之前有人问过这个问题,请原谅我,但我无法输入正确的搜索词来查找其他遇到此问题的人。

使用循环,我创建了一个数据帧名称列表。我想要做的是使用该列表的引用,以便 rbind 将相应的数据帧附加在一起。下面是我正在尝试做的一个例子:

list <- list("df1","df2","df3") #represents the list of names of the dataframes 
all_df <- rbind(list)

以上只是将数据帧的名称附加在一起,而不是数据帧本身。我也试过:

all_df <- rbindlist(list)

all_df <- do.call(what = rbind, args = list)

但运气不好。我能找到的所有建议似乎都指的是数据帧列表,而不是数据帧名称列表。

请帮忙!我对此非常紧张,因为我知道解决方案可能非常简单!

示例:

library(rlist)

textdfs <- list('mtcars', 'mtcars', 'mtcars')
mylist <- lapply(textdfs, function(x) eval(parse(text=x)))
bigdf <- list.rbind(mylist)

如果我没理解错的话,你有一个字符向量,其中包含你要绑定的对象的名称。 您的目标是使用“名称向量”将多个数据帧绑定到一个数据帧中。

我可以建议使用 mget() 函数将您的字符向量转换为实际对象的名称吗?这个不用列了。

请看下面的代码:

# dummy data to test it
df1 <- head(mtcars, 2)
df2 <- head(mtcars, 3)
df3 <- head(mtcars, 4)

# your "vector of names"
lst.names <- list("df1","df2","df3") # the output of your loop
df.names <- do.call(rbind, lst.names)[, 1] # change the list to a character vector

# this seems to work
do.call(rbind, mget(df.names)) 

输出:

> do.call(rbind, mget(df.names)) 
                    mpg cyl disp  hp drat    wt  qsec vs am gear carb
df1.Mazda RX4      21.0   6  160 110 3.90 2.620 16.46  0  1    4    4
df1.Mazda RX4 Wag  21.0   6  160 110 3.90 2.875 17.02  0  1    4    4
df2.Mazda RX4      21.0   6  160 110 3.90 2.620 16.46  0  1    4    4
df2.Mazda RX4 Wag  21.0   6  160 110 3.90 2.875 17.02  0  1    4    4
df2.Datsun 710     22.8   4  108  93 3.85 2.320 18.61  1  1    4    1
df3.Mazda RX4      21.0   6  160 110 3.90 2.620 16.46  0  1    4    4
df3.Mazda RX4 Wag  21.0   6  160 110 3.90 2.875 17.02  0  1    4    4
df3.Datsun 710     22.8   4  108  93 3.85 2.320 18.61  1  1    4    1
df3.Hornet 4 Drive 21.4   6  258 110 3.08 3.215 19.44  1  0    3    1