【问题标题】:Multiple conditions in if statements in RR中if语句中的多个条件
【发布时间】:2017-06-25 10:19:24
【问题描述】:

我正在尝试删减一份给我的基因名称列表。我正在尝试消除可能存在的任何重复名称,但在运行我的代码时我不断收到错误:

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 且仅使用第一个元素

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

谢谢!

【问题讨论】:

  • 只尝试一个&。有用吗?

标签: r if-statement multiple-conditions


【解决方案1】:

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

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

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

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) 你还缺少fors 的大括号

【讨论】:

  • 你错了else if,看here
【解决方案2】:

为什么不直接

geneNamesRevised <- unique( geneNames )

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

【讨论】:

    【解决方案3】:

    使用 &amp; 代替 &amp;&amp;

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

    【讨论】:

      猜你喜欢
      • 2014-09-06
      • 2015-01-20
      • 1970-01-01
      • 2015-09-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-12-17
      • 2020-09-18
      相关资源
      最近更新 更多