You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何我的R代码筛选上调DEG时会纳入下调基因数据?

问题原因排查
  • 核心错误:upregulated_indices是用which()得到的索引数字向量(比如c(1,3,5)),而concentrations == unique_concentration[1]是逻辑向量(比如c(TRUE,FALSE,TRUE...))。当对这两种不同类型的向量做&运算时,R会自动把索引向量转换成逻辑向量(非零值为TRUE,零为FALSE),若向量长度不匹配会触发循环补齐,导致原本不符合upregulated条件的行被错误选中。
  • 举个实例:假设upregulated_indices是c(2,4),concentrations == "2nM"是c(TRUE,TRUE,FALSE,FALSE),索引向量会被转成c(FALSE,TRUE,FALSE,TRUE),和逻辑向量运算后得到c(FALSE,TRUE,FALSE,FALSE)——如果逻辑向量和索引向量长度不一致,循环补齐就会导致错误筛选出downregulated的行。
修复方案

方法1:直接组合逻辑条件(推荐)

无需先用which()取索引,直接把两个条件用&组合:

DEG_data <- read.csv(file = 'DEG_changes(1).csv', header = TRUE)

# 定义upregulated的逻辑判断
is_upregulated <- DEG_data$changeDEG == "upregulated"

# 按浓度筛选目标数据
upregulated_conc2nM <- DEG_data$numberDEGs[is_upregulated & DEG_data$concentration == unique(DEG_data$concentration)[1]]
upregulated_conc5nM <- DEG_data$numberDEGs[is_upregulated & DEG_data$concentration == unique(DEG_data$concentration)[2]]
upregulated_conc50nM <- DEG_data$numberDEGs[is_upregulated & DEG_data$concentration == unique(DEG_data$concentration)[3]]

方法2:先筛选upregulated子集再拆分

先提取所有upregulated的行,再从中按浓度拆分数据,可读性更强:

DEG_data <- read.csv(file = 'DEG_changes(1).csv', header = TRUE)

# 先得到upregulated的完整子集
upregulated_data <- DEG_data[DEG_data$changeDEG == "upregulated", ]

# 从子集里提取对应浓度的numberDEGs
upregulated_conc2nM <- upregulated_data$numberDEGs[upregulated_data$concentration == unique(DEG_data$concentration)[1]]
upregulated_conc5nM <- upregulated_data$numberDEGs[upregulated_data$concentration == unique(DEG_data$concentration)[2]]
upregulated_conc50nM <- upregulated_data$numberDEGs[upregulated_data$concentration == unique(DEG_data$concentration)[3]]

额外简化方案

用dplyr包可以大幅简化筛选逻辑,代码更易读:

library(dplyr)

DEG_data <- read.csv(file = 'DEG_changes(1).csv', header = TRUE)

upregulated_data <- DEG_data %>% filter(changeDEG == "upregulated")

upregulated_conc2nM <- upregulated_data %>% filter(concentration == unique(DEG_data$concentration)[1]) %>% pull(numberDEGs)
# 同理处理5nM、50nM的筛选

内容的提问来源于stack exchange,提问作者jack is carbon

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.12 05:12:32