如何将which()输出的行号匹配ENSEMBL ID列获取非零TPM对应基因
方法1:通过已得到的行号直接匹配
你已经用which()得到了符合条件的行号,只需要把行号作为索引取ENSEMBL列的对应值即可,示例代码如下:
# 先把你得到的行号存为变量 row_idx <- which(df$SampleA == 1) # 索引ENSEMBL列的对应行,得到目标基因ID列表 sampleA_nonzero_genes <- df$ENSEMBL[row_idx]
如果你的样本列名带空格(比如你的示例里是Sample A),需要用反引号包裹列名:
row_idx <- which(df$`Sample A` == 1) sampleA_nonzero_genes <- df$ENSEMBL[row_idx]
小提示:如果你后续处理中把ENSEMBL ID设为了数据框的行名,替换为
rownames(df)[row_idx]即可取到对应的ID。
方法2:无需单独获取行号,直接用逻辑索引一步获取
其实不需要单独运行which()拿行号,直接用逻辑条件索引更简洁:
sampleA_nonzero_genes <- df$ENSEMBL[df$SampleA == 1]
如果需要将结果导出为文本文件,可运行以下代码:
write.table( sampleA_nonzero_genes, file = "sampleA_TPM_nonzero_genes.txt", row.names = FALSE, col.names = FALSE, quote = FALSE )
内容的提问来源于stack exchange,提问作者Dswede43
相关产品推荐
相关产品推荐

