[未知用户]
感谢回复,原来把ID去了就可以了
但是我现在对function里面的argument怎么定义又糊涂了。我其实希望的function里面的A,B,ID其实跟最开始的A,B,ID定义一样。本意其实就是两组data.frame A跟B中有重复的行,可以用ID来match,然后找出来A,B中都有的从A中删除,其实要的就是这个效果
A <- data.frame(ID=1:5,X=rnorm(5))
B <- data.frame(ID=c(2,4,6),X=rnorm(3))
A[ !(A$ID %in% B$ID), ]
我是希望能写个function,只要指定了A,B以及A,B中都有的一个变量ID,就能自动根据ID这个变量来match两组数据,然后把A中重复的行都删除。
去掉ID以后原来的function能用了,但是不能指定用来match的变量名了,我是希望变量名也能指定,省的每次重写function或者改变量名。
另外我还想请问下大神如何循环使用这个function,比如我有data.frame A,B,C,D,E....一直到G,我希望能A里面把跟B重复出现的行删除,再删除跟C重复的,一直删除到G,我试着把A到G批量导入到一个datalist里面,datalist[[1]]=A,然后datalist[[2]]=B.....一直到data.list[[10]]=G
然后
matchdropID=function(a,b){
c=a[ !(a$ID %in% b$ID), ]
c
}
for( i in 2:10){
datalist[[1]]=matchdropID(datalist[[1]],datalist[[i]])
}
A=datalist[[1]]
这样对吗?