Для цикла - Как преодолеть замену имеет проблему нулевой длины в R? - PullRequest
0 голосов
/ 17 мая 2019

Я получаю замену с нулевой длиной в конце цикла for.Хорошо, я знаю, что эта ошибка указывает на NULL или вектор длины 0.Я попробовал несколько решений, но ни одно из них не работает.Как выйти из результата na / 0 и продолжить цикл?

for(i in 1:nrow(df)){
  df[i,3] <- ... #that doesn't matter
  if(length(df[i,3] == 0)){
    df[i,3] <- "Not found"
  }
}

Error in x[[jj]][iseq] <- vjj : replacement has length zero

или

for(i in 1:nrow(df)){
  df[i,3] <- ... #that doesn't matter
  if(is.na(df[i,3] == TRUE){
    df[i,3] <- "Not found"
  }
}

Error in x[[jj]][iseq] <- vjj : replacement has length zero

Заранее спасибо.

Редактировать: Пример:

column1      column2          column3
   a      www.example.com/a     100
   b      www.example.com/b     150
   c      www.example.com/c     NA
   d      www.example.com/d     NA

И так далее ... Моя цель - пропустить ссылку (c), которую он не может найти, и сохранить цикл работоспособным.

1 Ответ

1 голос
/ 17 мая 2019

Вместо того, чтобы использовать цикл for для преобразования столбца, почему бы не использовать функцию dplyr :: mutate?

library(dplyr)

testFrame <- data.frame(a = 1:5, b = c(0,1,1,NA,0))

testFrameEdited <- testFrame %>% 
  mutate(b = ifelse(b == 0 | is.na(b), 'Not found', b))

testFrameEdited

Возвращает

  a         b
1 1 Not found
2 2         1
3 3         1
4 4 Not found
5 5 Not found
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...