Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
按名称排列的Rbind数组_R_Dataframe_Rbind - Fatal编程技术网

按名称排列的Rbind数组

按名称排列的Rbind数组,r,dataframe,rbind,R,Dataframe,Rbind,我有两个命名数组,可能长度不同 row1<-c(a="a1",b="b1",c="c1") row2<-c(a="a1",d="d1",b="b2",c="c2") 但使用通常的rbind,结果是 a d b c row1 "a1" "b1" "c1" "a1" row2 "a1" "d1" "b2" "c2" 有什么建议吗 谢谢我建议 n = sort(union(names(row1),names(row2))) rbind(row1[n

我有两个命名数组,可能长度不同

row1<-c(a="a1",b="b1",c="c1")
row2<-c(a="a1",d="d1",b="b2",c="c2")
但使用通常的rbind,结果是

       a    d    b    c   
row1 "a1" "b1" "c1" "a1"
row2 "a1" "d1" "b2" "c2"
有什么建议吗

谢谢

我建议

n = sort(union(names(row1),names(row2)))
rbind(row1[n], row2[n])

#      a    b    c    <NA>
# [1,] "a1" "b1" "c1" NA  
# [2,] "a1" "b2" "c2" "d1"

问题用data.frame标记,但示例使用矩阵。对于data.frames,我将使用以下软件包之一:

# new example
r1<-data.frame(a="a1",b="b1",c="c1", stringsAsFactors=FALSE)
r2<-data.frame(a="a1",d="d1",b="b2",c="c2", stringsAsFactors=FALSE)

library(data.table)
rbindlist(list(r1,r2), fill=TRUE)

#     a  b  c  d
# 1: a1 b1 c1 NA
# 2: a1 b2 c2 d1

library(dplyr)
bind_rows(r1, r2)

#       a     b     c     d
#   (chr) (chr) (chr) (chr)
# 1    a1    b1    c1    NA
# 2    a1    b2    c2    d1
类似地,如果涉及许多行,rs=listr1,r2,则可以执行rbindlistrs,fill=TRUE或do.callbind\u行,rs

myrows = list(row1,row2)
n = sort(Reduce(union, lapply(myrows, "names")))
do.call(rbind, lapply(myrows, `[`, n))
# new example
r1<-data.frame(a="a1",b="b1",c="c1", stringsAsFactors=FALSE)
r2<-data.frame(a="a1",d="d1",b="b2",c="c2", stringsAsFactors=FALSE)

library(data.table)
rbindlist(list(r1,r2), fill=TRUE)

#     a  b  c  d
# 1: a1 b1 c1 NA
# 2: a1 b2 c2 d1

library(dplyr)
bind_rows(r1, r2)

#       a     b     c     d
#   (chr) (chr) (chr) (chr)
# 1    a1    b1    c1    NA
# 2    a1    b2    c2    d1