是否有用于按行垂直合并多个数据帧的 R 函数?
Is there an R function for merging multiple data frames vertically by rows?
我想知道是否有一个 R 函数可以将多个数据帧的行垂直附加到一个数据帧中。我的数据集的列不同并且具有不同的名称,所以我不能使用 rbind()。我试过 bind_rows() 和 smartbind() 但仍然以水平方式获得输出。
这并不像我想象的那样容易解决:如果你尝试
rbind(unname(x), unname(y))
然后 R 抛出一个错误。
我发现的最简单的方法是在绑定之前将 data.frames 转换为矩阵:
as.data.frame(rbind(as.matrix(x), as.matrix(y)))
结果 data.frame 与给定的第一个 data.frame 具有相同的列名,在本例中为 x
。但是,您仍然需要 data.frames 具有相同的列数。
在基础 R 之外,data.table
包有一个 rbind
版本可以在绑定时忽略名称:
library(data.table)
rbind(as.data.table(x), as.data.table(y), use.names = FALSE)
但是,这将 return 变成 data.table
而不是 data.frame
,所以您之后可能需要将它转换回来。
我想知道是否有一个 R 函数可以将多个数据帧的行垂直附加到一个数据帧中。我的数据集的列不同并且具有不同的名称,所以我不能使用 rbind()。我试过 bind_rows() 和 smartbind() 但仍然以水平方式获得输出。
这并不像我想象的那样容易解决:如果你尝试
rbind(unname(x), unname(y))
然后 R 抛出一个错误。
我发现的最简单的方法是在绑定之前将 data.frames 转换为矩阵:
as.data.frame(rbind(as.matrix(x), as.matrix(y)))
结果 data.frame 与给定的第一个 data.frame 具有相同的列名,在本例中为 x
。但是,您仍然需要 data.frames 具有相同的列数。
在基础 R 之外,data.table
包有一个 rbind
版本可以在绑定时忽略名称:
library(data.table)
rbind(as.data.table(x), as.data.table(y), use.names = FALSE)
但是,这将 return 变成 data.table
而不是 data.frame
,所以您之后可能需要将它转换回来。