R中的用户输入(Rscript和Widows命令提示符)



我正在尝试弄清楚,如何在Windows命令提示符下使用Rscript运行r脚本并要求用户输入。

到目前为止,我已经找到了如何在 R 的交互式 shell 中请求用户输入的答案。任何对readline()scan()做同样事情的努力都失败了。

例:

我有一个多项式y=cX,其中X可以取多个值X1X2X3等。 C变量是已知的,所以为了计算y的值,我需要的是向用户询问Xi值并将它们存储在脚本中的某个位置。

Uinput <- function() {
    message(prompt"Enter X1 value here: ")
    x <- readLines()
}

这是要走的路吗?还有其他论点吗?as.numeric会有帮助吗?如何退货X1?实现会因操作系统而异吗?

谢谢。

这是一般的方法,但实现需要一些工作:你不想要readLines,你想要readline(是的,名称相似。是的,这很愚蠢。R充满了;)愚蠢的东西。

你想要的是这样的:

UIinput <- function(){
    #Ask for user input
    x <- readline(prompt = "Enter X1 value: ")
    #Return
    return(x)
}

不过,您可能希望在那里进行一些错误处理(我可以提供 FALSE 或"萝卜"的 X1 值)和一些类型转换,因为 readline 返回一个单条目字符向量:提供的任何数字输入都可能应该转换为数字输入。因此,一种不错的、用户证明的方法可能是......

UIinput <- function(){
    #Ask for user input
    x <- readline(prompt = "Enter X1 value: ")
    #Can it be converted?
    x <- as.numeric(x)
    #If it can't, be have a problem
    if(is.na(x)){
         stop("The X1 value provided is not valid. Please provide a number.")
    }
    #If it can be, return - you could turn the if into an if/else to make it more
    #readable, but it wouldn't make a difference in functionality since stop()
    #means that if the if-condition is met, return(x) will never actually be
    #evaluated.
    return(x)
}
这对

我通过 Rscript 运行 Rscript 不起作用.exe在批处理文件 (.bat) 中。正如有人写的那样,这也对我有用:

cat("blablabla: ")
x <- readLines(con="stdin", 1)
x <- as.numeric(x)

相关内容

  • 没有找到相关文章

最新更新