如果声明 - 条件长度大于1

时间:2014-01-27 12:10:59

标签: r if-statement

我有两列(df$Zdf$A

我基本上想说:如果df $ Z小于5,则用df$A填充NA,如果不是,则单独留下df$A。我尝试过这些东西,但不确定我哪里出错或错误信息的含义。

if(df$X<5){df$A <- NA}

错误:

  

if if(df $ X&lt; 5){:条件有长度&gt; 1,只使用第一个元素

我也试图做更像这样的事情。

for(i in dfX){
if(df$X<5){
df$A <- "NA"
 }
}

3 个答案:

答案 0 :(得分:6)

如果需要声明则不。这就是矢量化的魔力。

df$A[df$Z < 5] <- NA

答案 1 :(得分:1)

一种简单的方法是"is.na<-"函数:

is.na(df$A) <- df$Z < 5

答案 2 :(得分:0)

R中if语句的向量化形式是ifelse()函数:

df$A <- ifelse( df$X < 5, NA, df$A )

然而,在这种情况下,我也会选择@ mark-heckmann的解决方案。

请注意,"NA"NA不同。