Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/82.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R比较列并grep假值_R_Dataframe_Boolean - Fatal编程技术网

R比较列并grep假值

R比较列并grep假值,r,dataframe,boolean,R,Dataframe,Boolean,我有一个数据框,首先我比较它们来创建一列布尔值,然后我想通过在前两列中grep它们来知道哪个是false df: 200610-1 200610-10 AA AA TRUE CC CC TRUE AA AA TRUE AA EE FALSE AA AA TRUE RR RR TRUE AA AA TRUE FF AA FALSE NN NN TRUE AA AA TRUE BB RR FALSE desired output: 4

我有一个数据框,首先我比较它们来创建一列布尔值,然后我想通过在前两列中grep它们来知道哪个是false

df:
    200610-1    200610-10   
AA  AA  TRUE
CC  CC  TRUE
AA  AA  TRUE
AA  EE  FALSE
AA  AA  TRUE
RR  RR  TRUE
AA  AA  TRUE
FF  AA  FALSE
NN  NN  TRUE
AA  AA  TRUE
BB  RR  FALSE

desired output:
4 AA EE
8 FF AA
11 BB RR
我把他们比了一比

 table(df[,2] == df[,3])

但我不知道如何将布尔值grep到数据帧值中。谢谢。

不要创建布尔列(我想在输出中我们不需要它),只需比较第一个和第二个比较,创建一个返回布尔值的表达式,并使用它来子集行

df[df[,1]!= df[,2],]
#    200610-1 200610-10
#4        AA        EE
#8        FF        AA
#11       BB        RR

不需要创建布尔列(我想在输出中我们不需要它),只需比较第一个和第二个比较,创建一个返回布尔值的表达式,并使用它来子集行

df[df[,1]!= df[,2],]
#    200610-1 200610-10
#4        AA        EE
#8        FF        AA
#11       BB        RR

或使用布尔列:

df[which(df[,3]==F),]

4  AA EE FALSE
8  FF AA FALSE
11 BB RR FALSE

或使用布尔列:

df[which(df[,3]==F),]

4  AA EE FALSE
8  FF AA FALSE
11 BB RR FALSE

假设列是字符,这是另一种方式:

df[-which(df[,1]==df[,2]),]
如果你想使用grep,试试看

df[!apply(df, 1, function(x) grepl(x[1], x[2])),]

4  AA EE
8  FF AA
11 BB RR

假设列是字符,这是另一种方式:

df[-which(df[,1]==df[,2]),]
如果你想使用grep,试试看

df[!apply(df, 1, function(x) grepl(x[1], x[2])),]

4  AA EE
8  FF AA
11 BB RR

这看起来不像R数据帧。列名是非法的。@42理论上,通过更改
colnames
或使用
df[[somestring]]]
创建变量,可以将任何内容作为列名。当然,你不应该这样!但它们不会以这种方式显示,而且会有三个列名。@42同意,这只是一句毫无意义的话。我猜显示是由于stackoverflow中的复制粘贴。也可以有空列名(使用“”作为字符串)。我总是惊讶于R在命名东西时是多么的宽容。例如,您可以使用
assign
…使用空格或任何东西命名变量,这看起来不像R数据帧。列名是非法的。@42理论上,通过更改
colnames
或使用
df[[somestring]]]
创建变量,可以将任何内容作为列名。当然,你不应该这样!但它们不会以这种方式显示,而且会有三个列名。@42同意,这只是一句毫无意义的话。我猜显示是由于stackoverflow中的复制粘贴。也可以有空列名(使用“”作为字符串)。我总是惊讶于R在命名东西时是多么的宽容。例如,您可以使用
assign
…使用空格或任何名称命名变量。。。