【问题标题】:R function does not return a numeric valueR函数不返回数值
【发布时间】:2021-01-04 05:38:59
【问题描述】:

我创建了如下函数:

#!/usr/bin/Rscript
targetRunner <- function(temp) {
  cost <- ((temp - 32) * (5 / 9)) + 273.15
  return(cost)
}

args <- commandArgs(trailingOnly=TRUE)
if (length(args) > 0) {
  targetRunner(as.numeric(args[1]))
} else {
  print("Supply one argument as the numeric value: usage ./target-runner temp")
}

我可以从 Linux 终端完美地运行这个功能。但是,当我将它作为 tragetRunner 引入 iRace 包并使用checkIraceScenario(scenario = scenario) 检查我是否已为该包准备好一切时,我收到以下错误:

...
== irace == The output was:
[1] NA
...
# targetRunner returned:
NULL

根据 iRace 包的用户指南,仅当此函数的结果不是数值时才会出现此错误。请告诉我为什么这个函数不返回数值?

【问题讨论】:

  • 此函数不能不返回数值。但是,它可以返回长度为 0 的数字向量(如果 as.numeric(args[1])NULL),它可以返回数字 NANaN 值(如果 as.numeric(args[1])NANaN)。在您的情况下,它似乎返回NA

标签: r linux function output


【解决方案1】:

这个问题是针对 iRace 包的。请相应地标记它。

我不熟悉 iRace,但从提供的示例 [1] 看来,上面的脚本必须打印一个简单的数值。在您的情况下,R 打印的文本比您想要的更多。 尝试在 if 语句中使用 cat(targetRunner(...))。

您还应该仔细阅读 iRace 文档,因为您将 4 个参数作为脚本的输入,而不仅仅是一个,请确保第一个参数是您要用于温度转换的参数。

[1]https://github.com/cran/irace/blob/master/inst/examples/Spear/target-runner

【讨论】:

    猜你喜欢
    • 2015-06-16
    • 2014-02-27
    • 1970-01-01
    • 2022-11-22
    • 1970-01-01
    • 2018-11-23
    • 2014-06-29
    • 1970-01-01
    相关资源
    最近更新 更多