如何将命名向量作为行添加到数据框中,并根据列名顺序重新排序?

kis*_*ore 4 row r append named dataframe

如何在数据帧中添加命名向量,并根据数据帧的列名对向量的组成进行重新排序?

我需要一次建立一个数据框。命名向量通过一些处理获得,它提供要插入的行的值。问题在于命名向量没有与数据帧列相同顺序的成分。这将rbind导致产生错误的结果。这是非常简化的示例代码:

df = data.frame(id=1:2, va=11:12, vb=21:22, vc=31:32)
v1 = c(id=4, va=14, vb=25, vc=NA)
df = rbind(df, v1)
Run Code Online (Sandbox Code Playgroud)

到目前为止,效果如此之好。现在,下一个向量处理将导致:

v2 = c(va=19, id=9, vc=34, vb=NA)
df = rbind(df, v2)
Run Code Online (Sandbox Code Playgroud)

这会产生错误的结果。正确的结果应该是

id va vb vc
1  1 11 21 31
2  2 12 22 32
3  4 14 25 NA
4  9 19 NA 34
Run Code Online (Sandbox Code Playgroud)

Mat*_*erg 5

v2之前制作一个数据框rbind

rbind(df, as.data.frame(t(v2)))
##   id va vb vc
## 1  1 11 21 31
## 2  2 12 22 32
## 3  4 14 25 NA
## 4  9 19 NA 34
Run Code Online (Sandbox Code Playgroud)

这是工作原理:

v2有名称,但它的作用类似于列向量as.data.frame

as.data.frame(v2)
##    v2
## va 19
## id  9
## vc 34
## vb NA
Run Code Online (Sandbox Code Playgroud)

因此,您必须转置数据以将其转换为正确的格式:

as.data.frame(t(v2))
##   va id vc vb
## 1 19  9 34 NA
Run Code Online (Sandbox Code Playgroud)