如何为(n-1)列进行rbind

时间:2018-04-26 14:18:55

标签: r

我正在寻找简单的以下任务;

想象一下有3行5列的数据帧;

  X1 X2 X3 X4 X5
1  1  2  3  4  5
2  3  4  5  6  7
3  2  3  4  5  6

我想将另一个常量行添加到最后4列

  X1 X2 X3 X4 X5
1  1  2  3  4  5
2  3  4  5  6  7
3  2  3  4  5  6
4     5  5  5  5

我怎么能够做到这一点?先感谢您!

2 个答案:

答案 0 :(得分:2)

假设您的原始数据框名为df,并且您在名为ncol(df)-1的向量中有长度为data.to.add的数据:

rbind(df, c(NA, data.to.add))

答案 1 :(得分:0)

这是一个函数:

输入数据:

df<-    
fread("  X1 X2 X3 X4 X5
1  1  2  3  4  5
      2  3  4  5  6  7
      3  2  3  4  5  6")

示例数据:

a=df;b=rep(5,4)

功能:

    rbind.filling <- function(a,b) {
    n_col<-max(ncol(a),ncol(b))
    if(is.null(dim(a))) {a<-matrix(c(rep(NA,n_col-length(a)),a),nrow=1);;colnames(a)<-names(b)} else {
        b<-matrix(c(rep(NA,n_col-length(b)),b),nrow=1);colnames(b)<-names(a)}
    return(rbind(a,b))
}

通话功能:

rbind.filling(a,b)
#    V1 V2 V3 V4 V5 V6
# 1:  1  1  2  3  4  5
# 2:  2  3  4  5  6  7
# 3:  3  2  3  4  5  6
# 4: NA NA  5  5  5  5

rbind.filling(b,a)
#    V1 V2 V3 V4 V5 V6
# 1: NA NA  5  5  5  5
# 2:  1  1  2  3  4  5
# 3:  2  3  4  5  6  7
# 4:  3  2  3  4  5  6