我subseting我的数据,以及我以下的代码获得不同的结果:不同的结果为R 2的子集数据的方法
subset(df, x==1)
df[df$x==1,]
x
的类型是integer
上午我做错了什么? 谢谢您提前
我subseting我的数据,以及我以下的代码获得不同的结果:不同的结果为R 2的子集数据的方法
subset(df, x==1)
df[df$x==1,]
x
的类型是integer
上午我做错了什么? 谢谢您提前
没有示例数据,很难说你的问题是什么。然而,我的直觉是,下面可能解释您的问题:与[
df[df$quantity == 2,]
quantity item
2 Americano
NA <NA>
现在
df <- data.frame(quantity=c(1:3, NA), item=c("Coffee", "Americano", "Espresso", "Decaf"))
df
quantity item
1 Coffee
2 Americano
3 Espresso
NA Decaf
让我们的子集,让我们与subset
子集:
subset(df, quantity == 2)
quantity item
2 Americano
我们看到,有一个子设置输出的差异取决于如何处理值NA
。我认为这一点如下:使用subset
,您明确声明您希望条件为的子集可验证地为真。 df$quantity==2
会生成一个真/假陈述的向量,但如果数量缺失,则不可能分配TRUE
或FALSE
。这就是为什么我们得到与NA以下输出结尾:
df$quantity==2
[1] FALSE TRUE FALSE NA
功能[
借此载体,但不知道做什么用NA
,这是不是NA Decaf
我们为什么NA <NA>
。如果你喜欢使用[
,您可以使用以下代替:
df[which(df$quantity == 2),]
quantity item
2 Americano
这意味着逻辑条件df$quantity == 2
为载体或行号,其中的逻辑条件是“可核查”满意。
正如我在上面的评论中写道的..你是对的。你能说出这种差异的原因是什么? TKS! – staove7
我已经添加了一个小记录到我的答案,这可能有助于记住哪一个是哪个。我认为这更多的是在'base R'中的一个约定,尽管我们在附加包中看到了例如。 'dplyr :: filter','NA's也被排除在外。实际上,我认为会议是有帮助的,因为它能让我在脚趾上寻找缺失的价值,但最终这是一个品味的问题,我会假设。 – coffeinjunky
你是对的,'x'有2种类型的值:1或NA ..(我忘了提及它)..但为什么会发生? (使用'子集'的结果是好的) – staove7