R: plyr::rbind.fill in dplyr有没有好的替代品?
R: Is there a good replacement for plyr::rbind.fill in dplyr?
对于 tidyverse 用户,dplyr 是处理数据的新方法。
对于试图避免使用旧包 plyr 的用户,dplyr 中 rbind.fill 的等效功能是什么?
是的。 dplyr::bind_rows
感谢评论者。
备选方案:
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 (originally from https://github.com/jonkatz2/monitoR).
对于 tidyverse 用户,dplyr 是处理数据的新方法。
对于试图避免使用旧包 plyr 的用户,dplyr 中 rbind.fill 的等效功能是什么?
是的。 dplyr::bind_rows
感谢评论者。
备选方案:
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 (originally from https://github.com/jonkatz2/monitoR).