IF返回“条件长度> 1且仅使用第一个元素”

时间:2014-03-03 15:16:53

标签: r

对于以下代码,我收到消息“条件长度> 1且仅使用第一个元素”:

if (is.na(PSIBl_Tax_Gene$CDS_Acc1)==TRUE & is.na(PSIBl_Tax_Gene$GeneID)==FALSE)

我想这里IF只看“==”运算符,但我真的对IF看整个表达式感兴趣,由“&”给出(AND)逻辑运算符。我想我的语法错误,但到目前为止我还没弄清楚哪个。

1 个答案:

答案 0 :(得分:2)

尝试:

  

if(all(is.na(PSIBl_Tax_Gene $ CDS_Acc1)== TRUE& is.na(PSIBl_Tax_Gene $ GeneID)== FALSE))

(另见矢量逻辑运算符“any”)。

问题是你试图调整一个TRUE / FALSE值的向量:

  

if(c(TRUE,FALSE,TRUE,TRUE,...))显示(“是”)

因此消息。看看运行时会发生什么

  

is.na(PSIBl_Tax_Gene $ CDS_Acc1)

你应该得到一个TRUE / FALSE值的向量。您要么需要查看其中一个:

  

is.na(PSIBl_Tax_Gene $ CDS_Acc1)[X] == TRUE

其中x是您感兴趣的矢量元素的索引,或者您可以将整个矢量与TRUE / FALSE值的矢量进行比较

  

all(is.na(PSIBl_Tax_Gene $ CDS_Acc1)== rep(TRUE,length(PSIBl_Tax_Gene $ CDS_Acc1)))

简而言之

  

all(is.na(PSIBl_Tax_Gene $ CDS_Acc1)== TRUE))