检查值是否在数据框中

时间:2017-04-05 14:15:04

标签: r dataframe

我正在尝试检查特定值是否在数据框中的任何位置。

我知道%in%运算符应该允许我这样做,但它似乎没有按照我应用于整个数据框的方式工作:

A = data.frame(B=c(1,2,3,4), C=c(5,6,7,8))
1 %in% A

[1] FALSE

但是,如果我将其应用于特定列,则值将按照我期望的方式运行:

1 %in% A$C

[1] TRUE

检查某个值是否在数据框中的任何位置的正确方法是什么?

6 个答案:

答案 0 :(得分:10)

你可以这样做:

any(A==1)
#[1] TRUE

Reduce

Reduce("|", A==1)

OR

length(which(A==1))>0

OR

is.element(1,unlist(A))

答案 1 :(得分:8)

或者只是

sum(A == 1) > 0
#[1] TRUE

答案 2 :(得分:5)

使用sapply循环变量,然后使用any

any(sapply(A, function(x) 1 %in% x))
[1] TRUE

或者在digEmAll的评论之后,您可以使用unlist,它会获取一个列表(data.frame)并返回一个向量。

1 %in% unlist(A)
[1] TRUE

答案 3 :(得分:4)

要查找该值的位置,您可以执行f.ex:

which(A == 1, arr.ind=TRUE)
#     row col
#[1,]   1   1

答案 4 :(得分:3)

理解为什么你的第一次尝试不起作用的技巧,实际上归结为理解数据框是什么 - 即一个相等长度的向量列表。你在这里尝试做的不是检查矢量列表是否符合你的条件,而是检查这些矢量中的值是否与条件匹配。

答案 5 :(得分:0)

尝试:

any(A == 1)

返回FALSE或TRUE