我正在嘗試檢查特定值是否在數據幀中的任何位置。檢查值是否在數據幀中
我知道%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
什麼是檢查是否值是在數據幀的任何位置的正確方法?
我正在嘗試檢查特定值是否在數據幀中的任何位置。檢查值是否在數據幀中
我知道%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
什麼是檢查是否值是在數據幀的任何位置的正確方法?
你可以這樣做:
any(A==1)
#[1] TRUE
或與Reduce
:
Reduce("|", A==1)
OR
length(which(A==1))>0
OR
is.element(1,unlist(A))
儘管所有這些工作,只有第一個清楚地說明了代碼的作用。 – dash2
使用sapply
循環變量,然後使用any
。
any(sapply(A, function(x) 1 %in% x))
[1] TRUE
或以下digEmAll的評論,你可以使用unlist
,它接受一個列表(data.frame),並返回一個載體。
1 %in% unlist(A)
[1] TRUE
訣竅理解爲什麼你的第一次嘗試是不行的,其實就是要了解一個數據幀是什麼 - 即長度相等的向量的列表。你在這裏試圖做的不是檢查向量列表是否與你的條件匹配,而是檢查這些向量中的值是否與條件匹配。
要查找該值,你可以做f.ex位置:
which(A == 1, arr.ind=TRUE)
# row col
#[1,] 1 1
嘗試:
any(A == 1)
返回FALSE或TRUE
'1%作爲%。矩陣(A)'?如果A的所有列都是數字,那當然是有意義的...... – digEmAll
@digEmAll,'「1」%in%as.character(as.matrix(A))'可以在所有情況下工作,但是我不'不知道那是多好。 –