我有一个数据框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>
关于我做错的任何想法?
谢谢
答案 0 :(得分:4)
我最初在评论中有这个,但它有点冗长,而且我想添加它。这里有一些关于发生了什么的细节:
您使用==
进行的操作是回收两个长度向量,以便将每个偶数行与"KV2c"
进行比较,将每个奇数行与"I210plusc"
进行比较,以便最终得出结果将是"KV2c"
的奇数行的数据框和"I210plusc"
的偶数行。
可能使问题明确的替代解决方案如下:
subset(ma, type == selected_types[[1]] | type == selected_types[[2]])
或者,更优雅:
subset(ma, type %in% selected_types)
%in%
运算符为type
中TRUE
的每个位置返回一个与type
长度相同的逻辑向量,其中“selected_types
位于{{1}}内运营商的名称。)