在R中找不到匹配项时的替代项()

在R中找不到匹配项时的替代项(),r,logical-operators,R,Logical Operators,如果没有元素TRUE,则which命令将删除所有数据行。使用iris数据集进行演示,让我们尝试删除不存在物种的行 dim(iris[-which(iris$Species=="nonsense"),]) # [1] 0 5 删除所有行,但使用条件直接返回预期结果 dim(iris[iris$Species!="nonsense",]) # [1] 150 5 这个问题得到了解决,公认的答案是=上面的解决方案。但是,我需要将条件结果存储在一个变量中 x <- which(iris$S

如果没有元素
TRUE
,则
which
命令将删除所有数据行。使用
iris
数据集进行演示,让我们尝试删除不存在物种的行

dim(iris[-which(iris$Species=="nonsense"),])
# [1] 0 5
删除所有行,但使用条件直接返回预期结果

dim(iris[iris$Species!="nonsense",])
# [1] 150   5
这个问题得到了解决,公认的答案是
=上面的解决方案。但是,我需要将条件结果存储在一个变量中

x <- which(iris$Species=="nonsense")

最佳和最安全的做法是什么?

存储逻辑值或存储整数位置,并在对
yoursubset 0)iris[-x]进行子集设置时进行检查,否则iris
@Roland这就是我现在使用的。它看起来很笨重,而且我有忘记支票的倾向。我想知道是否有一个优雅的解决方案。我会存储逻辑值。如果内存非常紧张,我只会在这里使用
哪个
。@Roland你会将你的回答作为答案来获得积分吗?存储逻辑值或存储整数位置,并在对
你的子集0)iris[-x,]进行子集设置时进行检查,否则iris
@Roland这就是我现在使用的。它看起来很笨重,而且我有忘记支票的倾向。我想知道是否有一个优雅的解决方案。我会存储逻辑值。如果内存非常紧张,我只会在这里使用
。@Roland你能把你的回答作为一个答案来获得学分吗?
x <- iris$Species=="nonsense"