如何删除R中全部为零的行而不在rowSums中获取错误' x'必须是数字

时间:2014-07-24 04:44:30

标签: r bioinformatics

我的目标与此处解释的相同: How to remove rows with 0 values using R

我通过读取包含大约50000行的.csv文件创建了df1,其中许多行在FPKM列中为0 0 0 0。 输入数据框:

tracking_id   gene_id locus   FPKM-R1 FPKM-R2 FPKM-R3 FPKM-R4
NR_1  DDX1    chr1:1  0.031   0.056   0.0045  0.0345
NR_2  DDX2    chr1:2  3.06588 3.65986 5.32698 3.6996
NR_3  DDX3    chr1:4  0   0   0   0
NR_4  DDX4    chr1:4  0   0   0   0
NM_5  DDX5    chr1:5  0   0   0.046985    0

所需的输出数据框:

tracking_id   gene_id locus   FPKM-R1 FPKM-R2 FPKM-R3 FPKM-R4
NR_1  DDX1    chr1:1  0.031   0.056   0.0045  0.0345
NR_2  DDX2    chr1:2  3.06588 3.65986 5.32698 3.6996
NM_5  DDX5    chr1:5  0   0   0.046985    0

我正在尝试应用过去帖子中提出的rowSums解决方案:

df2 <- df1[rowSums(df1[, -3]) > 0, ]

但是我正在

Error in rowSums(df1[, -3]) : 'x' must be numeric

我已检查过四个FPKM-R列中的数据是否为数字。我不知道为什么会出现这个错误,以及我可以做些什么来解决它。谢谢!

1 个答案:

答案 0 :(得分:2)

看起来你想检查所有列,但前三个。

df1[, -3]是删除了第三列的数据框。您想删除由R中的1:3表示的第1,2和3列,并给出以下表达式:

df2 <- df1[rowSums(df1[, -(1:3)]) > 0, ]