Функция R, которая выдает «неверно» для текстовой / символьной переменной - PullRequest
0 голосов
/ 27 апреля 2019

Я пытаюсь создать функцию в R, которая выдает «pass», если целое число больше 100, «fail», если меньше 100, или «нейтральное», если равно 100. Код должен сказать «недопустимый» для символьной переменной / текста.

Это код, который у меня есть:

compare <- function(x) {

 if (x>100) {
  result = "pass"
 }

 else if (x<100) {
 result = "fail"
 }

 else if (x==100) {
 result = "neutral"
 }

 else if (is.character(x) == TRUE) {
 result = "invalid"
 }

 print(result)

 }

compare(10)
compare(100)
compare(120)
compare("text")

Я ожидаю, что сравнение (10) выдаст «fail», сравнение (100) для «нейтрального», сравнение (120) для «pass») и сравнение («text») для «недопустимого». Все целые числа работают, однако, сравнение («текст») постоянно выдает «pass» вместо «invalid». Сравнение (as.character ("text")) также только выдает "pass".

1 Ответ

0 голосов
/ 27 апреля 2019

Чтобы создать условные операторы, вам нужно ==, а не =.

compare <- function(x) {
  if (!is.numeric(x)) {
    result = "invalid"
  } else  if (x>100) {
    result = "pass"
  } else if (x<100) {
    result = "fail"
  } else if (x==100) {
    result = "neutral"
  } 

  print(result)
}

Эта функция работала для меня.Ниже приведен тест вывода.

> compare(10)
[1] "fail"
> compare(100)
[1] "neutral"
> compare(120)
[1] "pass"
> compare("hello")
[1] "invalid"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...