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行。在没有编写循环的情况下,快速完成此操作的方法是什么?
答案 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
创建一个逻辑向量,回答该行是否包含多个唯一值。