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

问题描述 投票:0回答:2

我有一对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,用于百分比覆盖

r loops substitution
2个回答
1
投票

试试这个:

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

0
投票

更改

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

if ( is.na(x$species_1[i]) )
© www.soinside.com 2019 - 2024. All rights reserved.