有没有一个好的替代品可以在dplyr中取代plyr::rbind.fill?

41

对于 tidyverse 用户,dplyr 是处理数据的新方法。

对于试图避免使用旧版包 plyr 的用户,dplyr 中的等效函数是什么以使用 rbind.fill?

3个回答

49

是的。dplyr::bind_rows

感谢评论者。


0

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

0

另一种选择:

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接