如果没有符合条件的行,则返回空数据框

时间:2014-01-26 01:09:32

标签: r dataframe

我有一组表,其中的数据会发生变化。如果传递条件,我需要删除一些特定的行,但在某些情况下,没有要删除的行。而不是让整个数据框回来,我得到一个空的。这是一个简化的例子:

> data <- c(1,2,3,4,5,6,7)
> a <- data.frame(data)
> b <- a[-(a$data==6),]
> b
[1] 2 3 4 5 6 7
> b <- a[-(a$data==8),]
> b
numeric(0)

我应该如何删除这些行,所以这不会发生?

1 个答案:

答案 0 :(得分:1)

应该是这样的:

a[!(a$data==8),]

您可能还想使用drop=FALSE来确保结果为data.frame

> a[!(a$data==6),]
[1] 1 2 3 4 5 7

> a[!(a$data==6),,drop=FALSE]
  data
1    1
2    2
3    3
4    4
5    5
7    7