R 循环以筛选一列中0的值

R 循环以筛选一列中0的值,r,R,我正在尝试从AFR_META列中删除0的所有值 head(data1) CHR BP REF ALT AFR_META LOG SNPid 1 1 11063 T G 0.0002751 8.19838 1 2 1 13259 G A 0.0002778 8.18861 2 3 1 17641 G A 0.0008361 7.08676 3 我以前在一个单独的数据集上使用过以下内容,效果非常好: data1<

我正在尝试从AFR_META列中删除0的所有值

head(data1)
  CHR    BP REF ALT  AFR_META     LOG SNPid
1   1 11063   T   G 0.0002751 8.19838     1
2   1 13259   G   A 0.0002778 8.18861     2
3   1 17641   G   A 0.0008361 7.08676     3
我以前在一个单独的数据集上使用过以下内容,效果非常好:

data1<-data1[-which(data1$AFR_META==0),]

任何指导和帮助都很好!我现在正在R中工作,但可以在帮助下使用awk在linux中运行它。我之前试过awk,但没能写出正确的过滤器。对不起,这是新来的,我一直在绕着这个转。终于求助了!非常感谢大家。

也许您已经可以用Ronak Shah的评论解决您的问题,将浮点值与零进行比较确实不是一个好主意

但是,如果您打算删除AFR_META正好为零的所有行,那么当没有这样的行时就会出现问题。
的结果(data1$AFR\u META==0)
是一个
整数(0)
,它将删除数据帧的所有行

不使用索引,只需使用逻辑向量选择要删除的行:


data1浮点比较不准确。您可以尝试
data10,]
data1<-data1[-which(data1$AFR_META==0),]
head(data1)
[1] CHR      BP       REF      ALT      AFR_META LOG      SNPid   
<0 rows> (or 0-length row.names)
sapply(data1, class)
      CHR        BP       REF       ALT  AFR_META       LOG     SNPid 
"numeric" "integer"  "factor"  "factor" "numeric" "numeric" "integer"
library(dplyr)

# filtering all zero values
filter(data1, AFR_META != 0)

# or, adressing the floating point issue
filter(data1, !between(AFR_META, -0.0001, 0.0001))