我正在下载我的数据,并且我得到以下代码的不同结果:
for(var r of this.random)
if(r != this.y){
this.random.push(this.y);
};
subset(df, x==1)
df[df$x==1,]
的类型为x
我做错了吗? 提前谢谢
答案 0 :(得分:5)
如果没有示例数据,很难说出您的问题是什么。但是,我的预感是,以下内容可能解释了您的问题:
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
让[
df[df$quantity == 2,]
quantity item
2 Americano
NA <NA>
现在让subset
的子集:
subset(df, quantity == 2)
quantity item
2 Americano
我们发现子设置输出存在差异,具体取决于NA
值的处理方式。我认为如下:使用subset
,您明确声明您希望条件可验证为true的子集。 df$quantity==2
生成一个true / false语句的向量,但如果缺少数量,则无法分配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
这将逻辑条件{{1}}转换为向量或行数,其中逻辑条件是&#34;可验证的&#34;满意。