对于 tidyverse 用户,dplyr 是处理数据的新方法。
对于试图避免使用旧版包 plyr 的用户,dplyr 中的等效函数是什么以使用 rbind.fill?
是的。dplyr::bind_rows
感谢评论者。
在 R 基础上也是同样的事情:
df2 <- data.frame(a = c(1:5), b = c(6:10))
df3 <- data.frame(a = c(11:15), b = c(16:20), c = LETTERS[1:5])
df2[setdiff(names(df3), names(df2))] <- NA
df3[setdiff(names(df2), names(df3))] <- NA
rbind(df2, df3)
另一种选择:
rbindf <- function(...) {
l <- list(...)
if(length(l) == 1) l <- l[[1]]
nn <- length(l)
x <- l[[1]]
if(length(l)>1){
for(i in 2:nn) {
y <- l[[i]]
if(nrow(x) > 0 & nrow(y) > 0) {
if(!all(yinx <- names(y) %in% names(x))) {
x[, names(y)[!yinx]] <- NA
}
if(!all(xiny <- names(x) %in% names(y))) {
y[, names(x)[!xiny]] <- NA
}
}
x <- rbind(x, y)
}
}
return(x)
}
来自 https://github.com/sashahafner/biogas(最初来自于 https://github.com/jonkatz2/monitoR)。