我对R比较陌生,如果我的问题不完全明确,请原谅:)
我从2个列表开始(这里有一个(ftyes)屏幕上限)。我有一个名为“ksauto”的函数,对于“类别”列中的条目,执行Kolmogorov-Smirnov(ks)测试以比较2个列表中“log2fc”列下的相应值。该函数还总结了每个类别的条目数。
我编写了一个循环来为“category”下的每个唯一条目运行函数,并将输出附加到向量,我将从中创建一个表。问题是,对于“类别”下的某些条目,例如catE,其中一个列表仅包含NA值,这会为ks测试产生问题并停止循环。我想编写一个IF子句来排除这些条目,但无法使其工作。
功能:
ksauto <- function(i){
#picks out entries with i in both lists
subyes <<- ftyes[ftyes$category== i,]
subno <<- ftno[ftno$category== i,]
#save output values
name <<- toString(i)
ks <<- round(ks.test(subyes$FC,subno$FC)$p.value,digits=5)
yescpe <<- sum(ftyes$category == i)
nocpe <<- sum(ftno$category == i)
}
循环:
for(i in unique(bpyes$name_1006))
{
#runs function for each unique i, append output to vector
ksauto(i)
vname[i] <- name
vks[i] <- ks
vyescpe[i] <- yescpe
vnocpe[i] <- nocpe
}
我有这样的IF子句:
((sum(!is.na(subyes$FC)) != 0 )&( sum(!is.na(subno$FC)) != 0 ))
我尝试将它放在函数中并将逻辑参数切换为OR子句,同时将next和else命令添加到IF子句中,但没有任何效果。如果我得到一些输入会很棒。谢谢你的时间!!
最佳,
威尔逊