我的目标与此处解释的相同: 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列中的数据是否为数字。我不知道为什么会出现这个错误,以及我可以做些什么来解决它。谢谢!
答案 0 :(得分:2)
看起来你想检查所有列,但前三个。
df1[, -3]
是删除了第三列的数据框。您想删除由R中的1:3
表示的第1,2和3列,并给出以下表达式:
df2 <- df1[rowSums(df1[, -(1:3)]) > 0, ]