比较列名并创建新表

Bha*_*nte 3 r match

我想比较两个数据框中的两个列名,并使用原始数据框中匹配的列名创建一个新表。

a<-data.frame(a1=c(1,2,3,4,5),a2=c(2,3,4,5,6),b1=c(3,4,5,6,7),c1=c(4,5,6,7,8))
b<-data.frame(c1=c(10,20,30,40,50),b1=c(20,30,40,50,60),d1=c(30,40,50,60,70))
Run Code Online (Sandbox Code Playgroud)

当列名(例如'c1'等)匹配时,我想创建一个新的数据框添加 a+b 。例如,基于上述数据,我的名为“c”的新数据框现在将是这样的:c=data.frame(c1=c(10+4,20+5,30+6,40+7,50+8), b1=c(20+3,30+4,40+5,50+6,60+7))

我的原始数据框比上面的大得多,所以我使用了“for (i in 1:10)”。但它仅在两个数据帧中两个列名的顺序相同时才有效。

提前感谢您的帮助。

Mat*_*rde 5

as.data.frame(lapply(intersect(names(a), names(b)), 
              function(name) a[name] + b[name]))
Run Code Online (Sandbox Code Playgroud)