Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/fsharp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 有没有办法通过命名列表绑定多个数据帧?_R_List_Rbind - Fatal编程技术网

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

R 有没有办法通过命名列表绑定多个数据帧?,r,list,rbind,R,List,Rbind,如果以前有人问过这个问题,请原谅我,但我无法输入正确的搜索词来查找其他有此问题的人 使用循环,我创建了一个数据帧名称列表。我试图做的是使用引用列表,这样rbind将相应的数据帧附加在一起。下面是我尝试做的一个例子: list <- list("df1","df2","df3") #represents the list of names of the dataframes all_df <- rbind(list) 以上

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

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

list <- list("df1","df2","df3") #represents the list of names of the dataframes 
all_df <- rbind(list)
以上只是将数据帧的名称附加在一起,而不是数据帧本身。我也试过:

all_df <- rbindlist(list)

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

请帮忙!我对这件事非常恼火,因为我知道解决办法可能真的很简单

示例:

library(rlist)

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

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)) 

如果我理解正确,您有一个包含要绑定的对象名称的字符向量。 您的目标是使用名称向量将多个数据帧绑定到单个数据帧中

我可以建议使用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)) 

您可以尝试rlist包中的list.rbind函数:Hello:这是因为您正在使用字符向量。不是命名对象的列表。您可以尝试rlist包中的list.rbind函数:Hello:这是因为您正在使用字符向量。不是命名对象的列表。谢谢您的帮助!我尝试了这个,但得到了错误:mgetlist中的错误:首先无效argument@asbhopal1请把typeofdf.names的输出发出去好吗?根据?mget,这必须是对象名称的字符向量。例如:这不起作用do.callrbind,mgetlistdf.names,但它起作用:do.callrbind,mgetdf.names with df.names hi paul。显示为列表的类型。仍然得到无效的第一个参数错误:好的,为了让这段代码工作,需要在mget中有一个向量,而不是一个列表。只需将列表DF1、df2、df3更改为cdf1、df2、df3。但是,正如你所提到的,你从一个循环中得到这个列表,我将编辑答案,向你展示如何从listdf1,df2中检索这样的向量,df3@asbhopal1我已经编辑了一行代码,将listdf1、df2、df3转换为cdf1、df2、df3谢谢您的帮助!我尝试了这个,但得到了错误:mgetlist中的错误:首先无效argument@asbhopal1请把typeofdf.names的输出发出去好吗?根据?mget,这必须是对象名称的字符向量。例如:这不起作用do.callrbind,mgetlistdf.names,但它起作用:do.callrbind,mgetdf.names with df.names hi paul。显示为列表的类型。仍然得到无效的第一个参数错误:好的,为了让这段代码工作,需要在mget中有一个向量,而不是一个列表。只需将列表DF1、df2、df3更改为cdf1、df2、df3。但是,正如你所提到的,你从一个循环中得到这个列表,我将编辑答案,向你展示如何从listdf1,df2中检索这样的向量,df3@asbhopal1我用一行代码编辑了代码,将listdf1、df2、df3转换为cdf1、df2、DF3DoE,恐怕不行。只是将名称列表绑定在一起,而不是我希望它们引用的数据帧,恐怕不行。只是将名称列表绑定在一起,而不是我希望它们引用的数据帧