R比较列并grep假值
我有一个数据框,首先我比较它们来创建一列布尔值,然后我想通过在前两列中grep它们来知道哪个是falseR比较列并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
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
…使用空格或任何名称命名变量。。。