如何将命名向量添加到数据框中,并根据数据框的列名称重新排序向量的组件?
我需要一次一行构建一个数据框。通过某种处理获得命名向量,它提供要插入的行的值。问题是命名向量的分量与数据框列的顺序不同。这使得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)
到目前为止,只要产生正确的结果就很好了。现在,下一个向量处理导致:
v2 = c(va=19, id=9, vc=34, vb=NA)
df = rbind(df, 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
制作一个数据框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
这就是为什么它有效的原因:
v2
有名称,但它的作用就像一个列向量as.data.frame
:
as.data.frame(v2)
## v2
## va 19
## id 9
## vc 34
## vb NA
因此,您必须转置数据以将其转换为正确的形式:
as.data.frame(t(v2))
## va id vc vb
## 1 19 9 34 NA
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)