Функция R с is.numeri c в качестве значения вставки - PullRequest
1 голос
/ 18 января 2020

Я готовлюсь к экзамену, включая некоторые основы R В наших упражнениях у нас есть следующая функция:

test <- function(x){
  if(is.logical(x)) {x <- is.numeric(x)}
  if(!is.numeric(x)) {x <- seq(2,10,length.out = length(x))}
  rval <- x
  return(rval)
}

Далее у нас есть следующие значения:

x <- c(2,3,5,7)
y <- c("A", "E", "I", "O", "U")
z <- c(TRUE, FALSE, TRUE, TRUE, FALSE)

Теперь мы должны знать, что R покажет:

(1) test(x)

(2) test(y)

(3) test(z)

Я в порядке с (1) и (2), но получил понятия не имею (3), так как аргумент {x <- is.numeric(x)} не имеет смысла для меня.

В любом случае, ответ "2". Но я этого не понимаю. Может быть, у вас есть идеи? Я пока не могу этого объяснить.

1 Ответ

1 голос
/ 18 января 2020

В функции 'x' или вход преобразуются в один логический FALSE, если он логический

if(is.logical(x)) {
    x <- is.numeric(x)
  }

Это значение возвращает FALSE, поскольку оно не numeric .

В следующей строке кода он снова оценивает ввод

if(!is.numeric(x))

Здесь FALSE возвращает TRUE и выполняет следующую строку

x <- seq(2,10,length.out = length(x))

, что будет переведено на

seq(2, 10, length.out = 1)

, потому что

length(FALSE) # is 1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...