r - 以 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”。但我不明白。也许你有什么想法?我还无法推理。
解决方案
在函数中,“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
推荐阅读
- c++ - 现代 C++ 是否有任何等效/替代 boost::archive::iterators 的功能?
- python - Python算法/模型专门使计算机崩溃
- mysql - GROUP BY 使查询非常慢
- java - Spring server.forward-headers-strategy NATIVE vs FRAMEWORK
- r - 从循环中计算每个新数据帧的行数并将所有内容保存在一个循环中
- powershell - 如何在运行空间池中的 PowerShell 中连接和验证代理
- git - 修复或撤消标签上的分离头
- c# - 在 C# 中设置参数类型的最佳方法
- jquery - Datepicker 在禁用周末时自动设置第二天的日期:如果是星期五,则显示星期一
- python - 使用 Python Twitter Api 的 base64 太长