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

时间:2019-03-23 17:46:58

标签: r loops substitution

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

  

请注意,我无法堆叠必须保留在此结构中的向量以用于以后的分析

我曾尝试从在线资源中复制大量循环,并在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,以表示覆盖率

2 个答案:

答案 0 :(得分:1)

尝试以下方法:

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

答案 1 :(得分:0)

更改

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

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