从列表元素中删除重复项

时间:2014-03-14 14:14:20

标签: r duplicate-removal lapply

我正在尝试从位于单个列表中的多个数据框中删除具有重复条目的行(由两列定义)。

简单数据:

aa <- data.frame(a=rnorm(100),b=rnorm(100),x=rnorm(100),y=rnorm(100),Z=rep(1:4, each=25))
split.aa<-split(aa, aa$Z)

对于列表'split.aa'中的每个df,我试图删除具有重复的x,y对的行。

我可以用以下方式做到这一点:

split[[z]][!duplicated(split[[z]][,c('x','y')]),]

其中z是'split.aa'中每个df的名称。

我如何将其写入lapply以便对每个元素执行操作?

我很难绕过如何引用lapply函数中的特定列表元素。

2 个答案:

答案 0 :(得分:3)

lapply(split.aa, function(x) x[!duplicated(x[c("x", "y")]), ])

会做到这一点。

答案 1 :(得分:1)

只需在lapply中定义一个函数

lapply(split.aa, function(x) x[!duplicated(x[c("x", "y")]), ])