首页 > 解决方案 > 自动添加存在于一个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

标签: rfunctionloopsdataframematch

解决方案


假设所有涉及的 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)

推荐阅读