【发布时间】:2019-07-22 01:00:19
【问题描述】:
我正在使用 R 中的 dplyr 包来过滤我的基因表达数据。我已经计算了倍数变化,并希望过滤至少一个样本(列)的值大于 +0.584963 或小于 -0.584963 的基因(行)。示例数据:
X SAMPLE_1_FC SAMPLE_2_FC SAMPLE_3_FC SAMPLE_4_FC SAMPLE_5_FC
GENE_1 0.6780 0.4050 0.8870 0.3300 0.2230
GENE_2 0.2340 -0.6670 0.0020 0.1240 0.3560
GENE_3 0.0170 0.1560 0.1120 0.0080 -0.1230
GENE_4 -0.0944 -0.1372 -0.1800 -0.2228 -0.2656
GENE_5 -0.8080 -0.7800 -0.5560 0.0340 0.4450
GENE_6 0.2091 0.1106 0.0121 -0.0864 -0.1849
GENE_7 0.5980 0.7680 0.9970 0.4670 -0.7760
我目前正在使用以下脚本
det.cols<- colnames(my.data)[which(grepl("fc",tolower(colnames(my.data))))]
filt <- gsub(","," | ",toString(paste("`",det.cols,"`",">abs(0.584963)", sep = "")))
my.datasub<- my.data %>% filter_(filt)
但这只会返回大于 +0.584963 的基因,而不是负数。在示例的情况下,我想要的是一个包含基因 1、2、5 和 7 的子集列表。但它只给了我基因 1 和 7。我该如何更改?
我希望答案是这种格式:
X SAMPLE_1_FC SAMPLE_2_FC SAMPLE_3_FC SAMPLE_4_FC SAMPLE_5_FC
GENE_1 0.6780 0.4050 0.8870 0.3300 0.2230
GENE_2 0.2340 -0.6670 0.0020 0.1240 0.3560
GENE_5 -0.8080 -0.7800 -0.5560 0.0340 0.4450
GENE_7 0.5980 0.7680 0.9970 0.4670 -0.7760
谢谢。
【问题讨论】:
-
请提供一些示例数据,以作为完全可重现的示例。谢谢!
-
谢谢叶亚瑟。我已经编辑了这个问题。希望对您有所帮助。
-
哦,我终于在您的代码中发现了小错误。我在下面的答案中修复了它。
-
看起来自定义过滤器代码来自stackoverflow.com/questions/43981187/… - 下次链接到源材料时会有所帮助