如果满足条件则循环并将值附加到向量,否则跳到下一个

时间:2015-10-09 16:01:52

标签: r loops if-statement unique

我对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子句中,但没有任何效果。如果我得到一些输入会很棒。谢谢你的时间!!

example of one of two lists

最佳,

威尔逊

0 个答案:

没有答案