r语言 - 在过滤data.frame的列值时发出



我有一个问题,而试图过滤df,我不明白为什么。问题就这么简单:

view(df)
class(df)
.class2(df[[1]])
df
f <- df[df[,1] == 1,]
f

,输出如下:

> class(df)
[1] "data.frame"
> .class2(df[,1])
[1] "double"  "numeric"
> df
cod uncod
1  -0.8333333 0.040
2  -0.8333333 0.040
3  -0.8333333 0.040
4  -0.8333333 0.040
5  -1.0000000 0.038
6  -1.0000000 0.038
7   1.0000000 0.062
8   1.0000000 0.062
9  -0.8333333 0.040
10 -0.8333333 0.040
11 -0.8333333 0.040
> f <- df[df[,1] == 1,]
> f
[1] cod   uncod
<0 Zeilen> (oder row.names mit Länge 0)

虽然这样做很好:

f <- df[df[,1] == -1,]
> f
cod uncod
5  -1 0.038
6  -1 0.038
> 

我真的不明白发生了什么,因为它正在处理一个新的data.frame:

df2<-data.frame(cod=c(-0.83,-1,0,1),uncod=c(0.040,0.038,0.05,0.062))
> f2 <- df[df[,1] == 1,]
> f2
cod uncod
4   1 0.062
> 

我的第一个df有什么问题?对不起,我没有一个代表性的例子,但是data.frame来自一个更大的代码。

多亏了这些评论,我找到了解决方案。是浮点精度的问题。在

附近使用dplyr::可以正常工作
x <- 1 # Filter criteria
f <- df %>% filter(near(df[[1]],x)==TRUE)

不如基本函数好,但它可以工作。

最新更新