R语言中计算pval比例时if语句报错‘condition has length>1’的解决方法
解决R代码报错:
the condition has length >1 报错原因
R的if语句仅支持处理单个逻辑值,但pval[,1] < 0.05会生成一个与列长度一致的逻辑向量(每个元素对应原数据中的p值是否满足小于0.05的条件),长度大于1,因此触发该错误。
正确代码写法
无需使用if语句,直接通过逻辑索引筛选符合条件的p值后计算比例:
# 筛选第1列中小于0.05的p值,求和后除以样本量10000 p1prop <- sum(pval[,1][pval[,1] < 0.05]) / 10000
若数据中存在缺失值(NA),可添加na.rm = TRUE参数避免求和结果为NA:
p1prop <- sum(pval[,1][pval[,1] < 0.05], na.rm = TRUE) / 10000
额外提示
如果你的实际需求是统计小于0.05的p值的个数占样本量的比例(而非对p值本身求和),代码可简化为:
# 统计符合条件的数量,再除以样本量 p1prop <- sum(pval[,1] < 0.05, na.rm = TRUE) / 10000
内容的提问来源于stack exchange,提问作者laura.hopkins
相关产品推荐
相关产品推荐

