首页 > 解决方案 > 在 R 中:选择行中数值的数据框函数中的列

问题描述

请问我可以请教一个建议:

考虑 R 中的数据框,其中包含基因表达的数值:

x <- data.frame(TTT=c(0,1,0,0),
                TTA=c(0,1,1,0),
                ATA=c(1,0,0,0),
                gene=c("gene1", "gene2", "gene3", "gene4"))

我怎样才能只选择基因(行)的值非零的列?

谢谢你!

——波格丹

标签: r

解决方案


你可以考虑dplyr图书馆。在这个包中,有一个filter函数可以让你根据给定的条件对行进行子集化。

通过_if在函数后面添加,您可以使用轻松选择仅数字列is.numeric

x <- data.frame(TTT=c(0,1,0,0),
                TTA=c(0,1,1,0),
                ATA=c(1,0,0,0),
                gene=c("gene1", "gene2", "gene3", "gene4"))

library(dplyr)
x %>%
  filter_if(is.numeric, any_vars(. != 0)) # any_vars() takes |

#>   TTT TTA ATA  gene
#> 1   0   0   1 gene1
#> 2   1   1   0 gene2
#> 3   0   1   0 gene3

推荐阅读