R中if语句中的多个条件

时间:2017-02-07 23:58:23

标签: r if-statement multiple-conditions

我正在努力减少我给出的基因名单。我正在尝试消除可能存在的任何重复名称,但在运行代码时我一直收到错误:

counter=0
i=0
j=0
geneNamesRevised=array(dim=length(geneNames))
for (i in 0:length(geneNamesRevised))
  geneNamesRevised[i]=""
geneNamesRevised
for (i in 1:length(geneNames))
  for (j in 1:length(geneNamesRevised))
    if (geneNames[i]==geneNamesRevised[j])
    {
      break
    }
    else if ((j==length(geneNamesRevised)-1) &&
             (geneNames[i]!=geneNamesRevised[j]))
    {
      geneNamesRevised[counter]=geneNames[i]
      counter++
    }

错误消息是重复的字符串:

条件的长度>在图1中仅使用第一个元素,条件长度> 1。在图1中仅使用第一个元素,条件长度> 1。 1,只使用第一个元素

并且此错误消息是针对具有'&&'的最后一个“else if”语句。

谢谢!

3 个答案:

答案 0 :(得分:2)

为什么不

geneNamesRevised <- unique( geneNames )

...返回缩短的列表。还有一个duplicated函数可用于在否定时删除重复项。

答案 1 :(得分:1)

您的代码中存在一些问题。

1)else未正确指定 - 或者不是:)感谢@Mohsen_Fatemi

2)&amp;通常是你需要的,而不是&amp;&amp;

3)counter ++不是R

复制下面的代码并查看它是否正常运行

   for (i in 1:length(geneNames)){
     for (j in 1:length(geneNamesRevised)){
      if (geneNames[i]==geneNamesRevised[j])
      {
           break
      } else {

           if ((j==length(geneNamesRevised)-1) & (geneNames[i]!=geneNamesRevised[j]))
           {
                geneNamesRevised[counter]=geneNames[i]
                counter <- counter + 1
           }
      }
   }
}

修改

4)你也错过了for

的大括号

答案 2 :(得分:0)

使用&代替&&

else if ((j==length(geneNamesRevised)-1) & (geneNames[i]!=geneNamesRevised[j]))