【问题标题】:Prompt to put input string to variable - R提示将输入字符串放入变量 - R
【发布时间】:2018-12-04 20:30:17
【问题描述】:

我每天都在运行一个 R 脚本,我想在选择所有整个脚本时提示我输入数据。

我已经试过readline(prompt = ),它在rstudio控制台中提示,但是如果我选择所有代码运行它不会提示我。我也不喜欢控制台中的提示,因为它很容易被忽略。

我也查看了library(tcltk),希望消息框可以提供帮助,但我尝试的任何方法似乎都不起作用。

【问题讨论】:

  • 您具体尝试了什么,具体是如何“不起作用”的?通过命令行参数等将值传递给 R 脚本更容易。创建图形用户界面确实不是 R 的强项(除了闪亮之类的东西)。
  • @MrFlick 我尝试了tk_messageBox,因为它似乎是该包中唯一可能是我正在寻找的东西,但它没有输入字符串的选项。我同意图形界面并不理想,但我只是在尝试任何我能想到的东西。
  • 您是希望它每次调用都重新读取相同的数据或文件名,还是希望它每次都提示您输入新值(例如日期、股票股票代码,搜索词等)?如果是前者,请设置一个导入的配置文件。如果是后者,请传入命令行关键字(或编辑您的配置文件)。除非您真的想花时间开发 GUI,这不是 R 的强项。如果您告诉我们您希望如何“输入数据”,以及输入数据的类型和数量,将会非常有帮助。
  • @smci 如果我更具体一点,也许会有所帮助。我正在运行的脚本有一个变量,该变量存储了一个将在整个脚本中引用的日期。我希望及时工作作为更改日期的提醒。之所以需要提示,是因为我必须将其交给相对不熟悉 rstudio 的人,并且除非提示这样做,否则我不需要知道更改必要的变量。
  • 必须在 RStudio 中运行 R 代码的理由为零。 RStudio 只是 R 的 IDE。您可以使用 R.What's the best way to use R scripts on the command line (terminal)? 在 (Linux/Windows) shell 上简单地运行。这将允许您传递您想要的任何命令行参数,并避免浪费时间提出 GUI 来解决 RStudio。无论如何,如果您想以批处理模式、自动化、单元测试、持续集成等方式运行代码,您将需要这样做。

标签: r rstudio prompt


【解决方案1】:

这是一个使用library(tcltk)的方法

EntryBox <- function(label = 'Enter', title = 'Entry Box') {
    tt <- tktoplevel()
    tkwm.title(tt, title)   
    done <- tclVar(0)
    tkbind(tt,"<Destroy>", function() tclvalue(done) <- 2)
    result <- tclVar("")
    cancel.but <- tkbutton(tt, text='Cancel', command=function() tclvalue(done) <- 2)
    submit.but <- tkbutton(tt, text="Submit", command=function() tclvalue(done) <- 1)
    tkgrid(tklabel(tt, text=label),  tkentry(tt, textvariable=result), pady=3, padx=3)
    tkgrid(submit.but, cancel.but, pady=3, padx=3)
    tkfocus(tt)
    tkwait.variable(done)
    if(tclvalue(done) != 1) result <- "" else result <- tclvalue(result)
    tkdestroy(tt)
  return(result)
}

x <- EntryBox(label = 'Enter a string'); x

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-08-29
    • 2019-08-14
    • 2018-07-18
    • 2017-09-08
    • 1970-01-01
    • 1970-01-01
    • 2011-12-09
    相关资源
    最近更新 更多