Ошибка при попытке использовать switch () для возврата значения NULL в операторе if else в R - PullRequest
0 голосов
/ 30 января 2020

У меня есть оператор if с нулевым результатом, но я продолжаю получать ошибки при попытке запустить код.

Например, у моей df есть два столбца цифры c со значениями в диапазоне от 0 до 100 Я хочу создать новый столбец на основе следующего псевдо-кода:

ifelse (df $ column1 == 0, NULL, df $ column2 / df $ column1)

Я пытался switch () , но когда я это делаю, я получаю сообщение об ошибке: EXPR должен иметь длину 1 вектор

Код переключателя:

df$column3 = switch((df$column1[i] != 0) + 1, 
             NULL, 
             df$column2/df$column1)

Когда я пытался поместить это в для l oop, чтобы посмотреть на каждую запись отдельно, я получаю еще одну ошибку (аналогичную той, которая была у меня при попытке ifelse (): ошибка в df $ column3 [i] <- n: замена имеет нулевую длину </p>

для l oop:

for (i in 1:nrow(df)) {
             n = switch((df$column1[i] != 0) + 1, 
               NULL, 
               df$column2/df$column1)
             df$column3[i] = n 

      }

Как настроить это значение для установки значения NULL в столбце, если оно не удовлетворяет определенным критериям.

Любой совет будет очень полезным, пожалуйста Спасибо!

1 Ответ

0 голосов
/ 30 января 2020

Кажется, что ваш псевдокод в основном там?

Вот пример с набором данных iris, который идет с R:

iris$newcol = ifelse(
  iris$Sepal.Length < 5, 
  NA_real_, 
  iris$Sepal.Length/iris$Sepal.Width
  )
iris
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...