2011-02-02 30 views
6

後我有一個data.frame有一列,像這樣:Data.frame變得因子/矢量濾波/子集

>d = data.frame(animal=c("horse","dog","cat")) 

然後我通過排除所有物品也存在於載體中過濾。例如:

> res = d[!(d$animal %in% c("horse")),] 
> res 
[1] dog cat 
Levels: cat dog horse 
>class(res) 
[1] "factor" 

這是怎麼回事?

+0

還要注意的是,類列在你的data.frame不是「character」,而是「factor」:`class(d [[1]])`。 – 2011-02-02 18:42:55

回答

9

歡迎R.你剛剛被咬傷的drop煩惱:你需要明確地告訴R值不要爲「下降到一維」:

res = d[!(d$animal %in% c("horse")), , drop = FALSE] 
+0

Jeez。誰認爲這是一個好主意? – 2011-02-02 18:27:12