对 R 中的 if 语句感到困惑:想做条件 NA

Confused about if statement in R: Want to make conditional NA

我对 R 中的条件 if 语句感到困惑。

我想要的:

假设有两个变量;数据$出口和数据$销售,

仅当一行的 Data$Export 和 Data$Sales 的值为“0”时,我才希望从数据集中删除该行。或者,正如我所想的那样,将行中的任何变量设置为 NA,因此将被删除:"Data <- na.omit(Data) " anyway.

于是想到了如下构造:

for (i in 1:nrow(Data)) { if ( (Data$Sales[i] == 0) &(Data$Export[i] == 0 ) ) {Data$Sales [i] <- NA }}
Data <- na.omit(Data)

但是,这不起作用,错误代码产生: TRUE/FALSE 需要

的缺失值

提前感谢您对我可能获得的任何帮助。

我认为您不需要使用条件 if 语句来这样做。使用 diamonds data.frame,您可以删除变量 yz 中都为 0 的行,如下所示。感谢@Moody、@Uwe 和 OP 评论,它应该是 |代替 &。

library(dplyr)
diamonds1 <-  diamonds %>% 
  dplyr::filter(y!=0 | z!=0)

同样可以应用于您的数据框

data1 <- data %>% 
  dplyr::filter(Sales!=0 | Export!=0)
Data2 <- Data[Data$Export !=0 | Data$Sales != 0,]

或设置 NA

 Data[Data$Export !=0 | Data$Sales != 0,] <- NA