Дайте значение второго столбца 0, где первый столбец показывает NA для той же строки - PullRequest
0 голосов
/ 23 марта 2019

У меня есть набор данных с 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 ]

1 голос
/ 23 марта 2019

Попробуйте вместо этого:

x[is.na(x$species_1), "cover_1"] <- 0
0 голосов
/ 23 марта 2019

Изменить

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

на

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