r中的子集索引

时间:2014-02-24 22:40:31

标签: r dataframe subset

我有一个数据框ma

它有一个名为type

的因子

type由以下因素组成:I210, I210plus, I210plusc, KV2c, KV2cplus

我想将其中一些因素放在矢量中,比如selected_types

所以,selected_types<-c("I210plusc","KV2c")

然后,将此命令子集放在数据帧ma

ma1<-subset(ma, type==selected_types)

这样ma1将成为ma的子集,仅包含

的观察结果

type I210plusc and KV2c

但是,当我执行此操作时,结果数据框ma1中的观察数量少于原始selected_types <{1}}中两种类型的出现次数之和/ p>

关于我做错的任何想法?

谢谢

1 个答案:

答案 0 :(得分:4)

我最初在评论中有这个,但它有点冗长,而且我想添加它。这里有一些关于发生了什么的细节:

您使用==进行的操作是回收两个长度向量,以便将每个偶数行与"KV2c"进行比较,将每个奇数行与"I210plusc"进行比较,以便最终得出结果将是"KV2c"的奇数行的数据框和"I210plusc"的偶数行。

可能使问题明确的替代解决方案如下:

subset(ma, type == selected_types[[1]] | type == selected_types[[2]])

或者,更优雅:

subset(ma, type %in% selected_types)

%in%运算符为typeTRUE的每个位置返回一个与type长度相同的逻辑向量,其中“selected_types位于{{1}}内运营商的名称。)