如何从R data.frame中删除带有重复元素的向量?

时间:2015-08-24 06:47:13

标签: r

dat = data.frame(do.call("rbind", list(c(1.5, 1.5, 1.5, 1.5, 1.5), c(1, 2, 3, 4, 5),
                           c(3, 3, 3, 3, 3), c(1, 2, 2, 3, 4))))

dat
   X1  X2  X3  X4  X5
1 1.5 1.5 1.5 1.5 1.5
2 1.0 2.0 3.0 4.0 5.0
3 3.0 3.0 3.0 3.0 3.0
4 1.0 2.0 2.0 3.0 4.0

这里我想删除第1行和第3行,因为这些行中的元素是相同的。我希望生成的data.frame只包含第2行和第4行。在没有编写循环的情况下,快速完成此操作的方法是什么?

1 个答案:

答案 0 :(得分:0)

您可以使用apply + length + unique以及常规子集:

dat[apply(dat, 1, function(x) length(unique(x))) > 1, ]
#   X1 X2 X3 X4 X5
# 2  1  2  3  4  5
# 4  1  2  2  3  4

以下是已经完成的工作:

  • apply(dat, 1, function(x) length(unique(x)))逐行浏览data.frame并返回每行中有多少唯一值。
  • > 1创建一个逻辑向量,回答该行是否包含多个唯一值。
  • 我们使用它来对我们想要的行进行子集化。