我有两列(df$Z
和df$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"
}
}
答案 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
不同。