R语言-使用扫描或读线等待用户输入

R语言-使用扫描或读线等待用户输入,r,input,readline,R,Input,Readline,我试图让用户为查询输入一些关键字,在我的脚本中,我使用了scan或readline。我尝试使用R-embeeded脚本编辑器(Windows)执行它,但当我执行代码时,它使用我的下一行脚本作为标准输入。 这是我的(部分)剧本 关键字这是我如何使用阅读行的: FUN <- function(x) { if (missing(x)) { message("Uhh you forgot to eneter x...\nPlease enter it now.")

我试图让用户为查询输入一些关键字,在我的脚本中,我使用了scan或readline。我尝试使用R-embeeded脚本编辑器(Windows)执行它,但当我执行代码时,它使用我的下一行脚本作为标准输入。 这是我的(部分)剧本


关键字这是我如何使用
阅读行的:

FUN <- function(x) {

    if (missing(x)) {
        message("Uhh you forgot to eneter x...\nPlease enter it now.")
        x <- readLines(n = 1)
    }
    x
}

FUN()

有趣我只是在Rstudio上试过,没问题。你应该试试Rstudio。我想写一些“更小的”(一两行),但我会使用你的函数,因为她是工作的那个。谢谢事实上,我仍然有这个问题,但我认为这只是因为RGUI使用脚本行作为标准输入,所以没有其他的事情要做。当我把你的作为一个函数包装起来并在RGUI(Windows OS)上使用时,这是有效的。你是通过运行整个脚本块来做到的吗?当我在控制台中使用这些函数时,它们工作得很好,但是如果我尝试运行类似于
关键字Ahh的东西,那么您将获取这个脚本(不是交互式的),并且它不会要求输入。这是正确的吗?如果这是您的意思,我没有使用'source()'函数,并且我处于交互模式(之前已经检查过)。我只是点击Ctrl-a/Ctrl-r来执行我的全部代码(有时只是块,但仍然直接从编辑器中执行)
> keywords <- scan(what=character(), nlines=1)
1: keywords <- paste(keywords, collapse=",")
Read 4 items
> keywords
[1] "keywords"        "<-"              "paste(keywords," "collapse=\",\")"
FUN <- function(x) {

    if (missing(x)) {
        message("Uhh you forgot to eneter x...\nPlease enter it now.")
        x <- readLines(n = 1)
    }
    x
}

FUN()
FUN2 <- function() {

    message("How many fruits will you buy")
    x <- readLines(n = 1)

    message("Good you want to buy %s fruits.\n Enter them now.")
    y <- readLines(n = x)
    paste(y, collapse = ", ")
}

FUN2()
FUN3 <- function(n=2) {
    keywords <- scan(what=character(), nlines=n)
    paste(keywords, collapse=",")
}

## > FUN3 <- function(n=2) {
## +     keywords <- scan(what=character(), nlines=n)
## +     paste(keywords, collapse=",")
## + }
## > FUN3()
## 1: apple
## 2: chicken
## Read 2 items
## [1] "apple,chicken"