【发布时间】:2015-10-09 16:01:51
【问题描述】:
我对 R 比较陌生,如果我的问题不完全清楚,请原谅:)
我从 2 个列表开始(其中一个 (ftyes) 在这里被截屏)。我有一个名为“ksauto”的函数,它对“类别”列中的条目执行 Kolmogorov-Smirnov (ks) 测试,以比较 2 个列表中“log2fc”列下的相应值。该函数还汇总了每个类别的条目数。
我已经编写了一个循环来为“类别”下的每个唯一条目运行该函数,并将输出附加到向量,我将从该向量中制作一个表格。问题是,对于“类别”下的某些条目,例如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 子句,但没有任何效果。如果我能得到一些意见,那就太好了。感谢您的宝贵时间!
最好的,
威尔逊
【问题讨论】:
-
见
?try和?tryCatch
标签: r loops if-statement unique