当我尝试下面的代码时,第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")
答案 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