首页 > 解决方案 > 以 is.numeric 作为粘贴值的 R 函数

问题描述

我准备考试,包括一些 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”。但我不明白。也许你有什么想法?我还无法推理。

标签: rfunction

解决方案


在函数中,“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

推荐阅读