評論的長版具有正匹配
!(vector %in% another_vector)
實施例的代碼:(當然也可以與!
逆的%in%
匹配這樣
set.seed(123) # Fix the generator
#Build the data frame
df <- data.frame(var1 = sample(c(0,1),30,replace=T), var2=sample(c(0,1,"."),30,replace=T))
lv1 <- df$var1 %in% c(0,1) # First logical vector
lv2 <- df$var2 %in% c(0,1) # Same as lv1
slv <- lv1 & lv2 # combine them
df[slv,] #Do the select
生成的DF看起來像(第6行30):
> head(df)
var1 var2
1 0 .
2 1 .
3 0 .
4 1 .
5 1 0
6 0 1
LV2的樣子(我讓你自己看其他大號 ogical V ectors變量:
> lv2
[1] FALSE FALSE FALSE FALSE TRUE TRUE FALSE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
[18] TRUE TRUE FALSE TRUE TRUE FALSE TRUE TRUE TRUE TRUE FALSE FALSE TRUE
以及最終輸出:
> df[slv,] #Do the select
var1 var2
5 1 0
6 0 1
8 1 0
9 1 0
10 0 0
11 1 0
12 0 1
13 1 1
14 1 1
15 0 0
16 1 0
17 0 0
18 0 1
19 0 0
21 1 0
22 1 1
24 1 0
25 1 1
26 1 0
27 1 0
30 0 1
你應該包含一些你的數據(例如粘貼在頭部(df))和你想要的輸出。 – jeremycg
學習'ifelse'的目標是?因爲根據你對'ifelse'的使用,你可以完全省略它,因爲'<邏輯向量>&<邏輯向量>'將返回完全適合數據幀子集的邏輯向量。 – Tensibai
根據你的描述,做成很短的df [df $ var%%c(0,1)&df $ var2%%c(0,1),]'說明:'df $ var1%in%c 0,1)'將返回行的邏輯向量,其中'df $ var1'爲0或1,對於var2是相同的,將與&相結合,並且您獲得所有行,其中var1和var 2爲0或1 – Tensibai