首页 > 解决方案 > R在列表中的数据框中的列中提取唯一行值

问题描述

我有一个称为数据框的列表,list它看起来像这样:

列表[[1]]

X1 X2 X3 X4
a  1  b  c 
d  2  e  f
g  3  h  i
j  4  k  l

列表[[2]]

X1 X2 X3 X4
a  1  b  c
d  2  e  f
g  2  h  i
j  3  k  l

列表[[3]]

X1 X2 X3 X4    
a  1  b  c
d  2  e  f
g  3  h  i
j  4  k  l

我一直在尝试使用 lapply 循环遍历列表并打印出每个数据框 X2 列中的所有重复项。

我无法弄清楚这一点。将不胜感激任何帮助。谢谢。

我绑了

lapply(list, function(i) {
  if(length(unique(i[X2])) != length(i[X2])) {
    print(i[X2][duplicated(i[X2]))
  } else {
    print("No duplicates")
  }
})

标签: rlistdataframeduplicateslapply

解决方案


我们可以使用lapply,找出列中的duplicated索引X2并打印unique重复的值。

lapply(list_df, function(x) {
   inds <- duplicated(x$X2)
   if(any(inds)) unique(x$X2[inds]) else "No duplicates"
})

#[[1]]
#[1] "No duplicates"

#[[2]]
#[1] 2

#[[3]]
#[1] "No duplicates"

使用list_df而不是list因为list是内部 R 函数。


推荐阅读