r - 自动添加存在于一个data.frame中但在R中的其他data.frames中丢失的任何变量
问题描述
假设我有一个名为a
. 我想知道如何自动添加a
其他 data.frames 中存在但缺少的b
任何变量d
?
注意:我的目标是制作一个函数,以便可以基于单个参考data.frame 完成任意数量的 data.frames 和任意数量的变量。
a <- data.frame(x = 2:3, y = 4:5, z = c(T, F)) ## reference data.frame
b <- data.frame(x = 6:7) ## Add y and z here
d <- data.frame(x = 7:8) ## Add y and z here
解决方案
假设所有涉及的 data.frames 共享相同数量的行,您可以简单地:
toadd<-setdiff(colnames(a),colnames(b))
b[toadd]<-a[toadd]
将上述内容包装在一个函数中:
f<-function(refdf, ...) {
res<-listdf<-list(...)
res<-lapply(listdf, function(x) {
toadd<-setdiff(names(refdf),names(x))
x[toadd]<-refdf[toadd]
x
})
c(list(refdf),res)
}
然后尝试例如:
f(a,b)
f(a,b,d)
推荐阅读
- c++ - 显式复制构造函数会导致 C++ 中的编译错误。谁负责选角?
- postgresql - 如何在 Heroku 中启动 postgresql 服务器?
- react-native - react-navigation 抽屉和堆栈嵌套
- python - By Beautifulsoup. I want replace <br> to line-break : At the time of getText()
- php - 如何使用 Laravel 进行多模板
- mongodb - 为非关系数据分配大数据存储
- python - 从头开始构建 Python Pandas DataFrames(即将计算结果存储在 DataFrame 中)
- python - 带冒号的函数参数
- python - 当我使用 matplotlib.pyplot 时,为什么 y 轴下方的数字更大?
- java - LocalDateTime 解析为纪元秒