我正在下载我的数据,并且我得到以下代码的不同结果:
subset(df, x==1)
df[df$x==1,]
Run Code Online (Sandbox Code Playgroud)
x的类型是 integer
难道我做错了什么?先感谢您
没有示例数据,很难说出你的问题是什么.但是,我的预感是以下可能解释了您的问题:
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
Run Code Online (Sandbox Code Playgroud)
让我们的子集 [
df[df$quantity == 2,]
quantity item
2 Americano
NA <NA>
Run Code Online (Sandbox Code Playgroud)
现在让我们的子集subset:
subset(df, quantity == 2)
quantity item
2 Americano
Run Code Online (Sandbox Code Playgroud)
我们看到子设置输出存在差异,具体取决于NA值的处理方式.我想到如下:有了subset,你明确地说明你想要条件可验证为真的子集.df$quantity==2生成一个真/假语句的向量,但是如果缺少数量,则无法分配TRUE或FALSE.这就是为什么我们得到以下输出结尾的NA:
df$quantity==2
[1] FALSE TRUE FALSE NA
Run Code Online (Sandbox Code Playgroud)
该函数[采用此向量但不明白该怎么做NA,这就是为什么而不是NA Decaf我们得到的NA <NA>.如果您更喜欢使用[,可以使用以下代码:
df[which(df$quantity == 2),]
quantity item
2 Americano
Run Code Online (Sandbox Code Playgroud)
这将逻辑条件df$quantity == 2转换为向量或行号,其中逻辑条件"可验证地"满足.