我需要从数据框中排除变量“PABI”。所以,我按照以下方式进行了分类:
MyData4 <- subset(MyData, PROV=="PABI")
newdata <- MyData[!MyData4]
但是我收到了这个错误:
Error in FUN(left) : invalid argument type
In addition: Warning messages:
1: In Ops.factor(left) : ‘!’ not meaningful for factors
2: In Ops.factor(left) : ‘!’ not meaningful for factors
3: In Ops.factor(left) : ‘!’ not meaningful for factors
4: In Ops.factor(left) : ‘!’ not meaningful for factors
5: In Ops.factor(left) : ‘!’ not meaningful for factors
6: In Ops.factor(left) : ‘!’ not meaningful for factors
7: In Ops.factor(left) : ‘!’ not meaningful for factors
8: In Ops.factor(left) : ‘!’ not meaningful for factors
答案 0 :(得分:3)
为什么不这样做:
newdata <- subset(MyData, PROV!="PABI")
答案 1 :(得分:1)
!
仅适用于逻辑变量。但是,您的subset
调用会返回data.frame,而不是逻辑;因此错误。实际上,您只需要在第一行中反转条件:
newdata <- subset(MyData, PROV != "PABI")
就是这样。
为了澄清逻辑值的工作原理,您还可以编写以下内容:
has_PABI <- MyData$PROV == "PABI"
newdata <- MyData[! has_PABI]
请注意,第二行现在与您的代码相同。更改的是,您作为否定索引的变量现在是一个逻辑向量,每行包含值TRUE
或FALSE
,具体取决于该行的PROV
列的值。 / p>