行中填充了多个过滤器的NA值

时间:2014-07-01 08:11:45

标签: r

当我尝试下面的代码时,第251到2486行填充了NA值。

请告诉我,这段代码有什么问题?

> dim(email)
[1] 3921 21

> firstFilter = email[email$spam == 1,]
> dim(firstFilter)
[1] 367 21

> secondFilter = firstFilter[email$exclaim_mess > 0,] #**Unexpected output**
> dim(secondFilter)
[1] 2486 21

包裹信息,

install.packages("openintro")

2 个答案:

答案 0 :(得分:2)

这应该有效:

 firstFilter = email[email$spam == 1,]
 secondFilter = firstFilter[firstFilter$exclaim_mess > 0,]

答案 1 :(得分:1)

我假设你对过滤后NA s的存在感到困惑。好吧,如果它们是NA,那么使用email$spam==1进行子集化将保留这些行。毕竟,既然他们失踪了,你怎么知道他们不等于一个?

要避免此行为,请尝试将您的条件包装到which()

示例:

 # use mtcars data and introduce NAs
 mtcars[mtcars$mpg>23,] <- NA
 dim(mtcars)
 > [1] 32 11
 dim(mtcars[mtcars$mpg<23,])
 > [1] 32 11
 dim(mtcars[which(mtcars$mpg<23),])
 > [1] 25 11