给第二列 0 值,其中第一列显示同一行的 NA

Give second column 0 value where first column shows NA for the same row

我有一个 16 列成对的数据集。一个带有物种名称,第二个带有覆盖百分比(因此 8 列带有物种名称,8 列带有覆盖百分比的整数)。我希望物种名称为 NA 的行在同一行的相邻覆盖百分比列中有一个 0。我如何编写执行此操作的循环?

note that I can't stack the vectors they must remain in this structure for later analyses

我试过从在线资源中复制大量循环以及 SE 上的无数示例,但我似乎无法正确复制。我已经为初学者尝试了这段代码

for(i in 1:nrow(x)){
  if (x$species_1[i]==NA) {x$cover_1[i] <- 0}
  else {NULL}
}

但是它抛出了这个

    Error in if (x$species_1[i] == NA) { : missing value where TRUE/FALSE needed

我读到的内容与矢量中有 NA 的事实有关......所以你看到了我的难题......

最后,我希望物种的所有 NA 在覆盖百分比的相邻列中都有相应的 0

试试这个:

x[is.na(x$species_1), "cover_1"] <- 0

改变

if (x$species_1[i]==NA)

if ( is.na(x$species_1[i]) )