【问题标题】:Creating a Prompt/Answer system to input data into R创建提示/回答系统以将数据输入 R
【发布时间】:2012-06-15 22:56:56
【问题描述】:

我创建了一些 R 代码,供对 R 一无所知的人使用(尽管我自己很环保)。我一直在让人们将初始数据粘贴到 R 控制台(结果好坏参半),我希望为人们输入数据建立一种更加用户友好的方式。

理想情况下,有人可以坐在控制台前,输入命令,然后系统会提示有关如何输入数据的具体问题。

例如,一个人加载 r 并看到一个提示:

What is x value?

输入的人:

2

下一个提示:

What is y value?

输入的人:

3

下一个提示:

 What are T values?

输入的人:

 4,3,2,1

下一个提示:

什么是 V 值?

输入的人:

4,5,6,9

使用这 4 个新定义的变量 (X,Y,T,V) R 的下一步是运行预先编写的代码

X+Y
V+T

然后在控制台中弹出答案

5
8 8 8 10

每个人都很开心

我很抱歉,因为这不是一个可重复的代码类型的问题,但我不确定如何让 R 提出问题,而不是我提出有关 R 的问题!

【问题讨论】:

    标签: r


    【解决方案1】:

    由于这应该仅用作交互式代码,readline() 可以为您工作。我没有添加任何错误检查,但您可能需要做大量的检查以确保正确输入。这是核心概念:

    fun <- function(){
      x <- readline("What is the value of x?")  
      y <- readline("What is the value of y?")
      t <- readline("What are the T values?")
      v <- readline("What are the V values?")
    
      x <- as.numeric(unlist(strsplit(x, ",")))
      y <- as.numeric(unlist(strsplit(y, ",")))
      t <- as.numeric(unlist(strsplit(t, ",")))
      v <- as.numeric(unlist(strsplit(v, ",")))
    
      out1 <- x + y
      out2 <- t + v
    
      return(list(out1, out2))
    
    }
    

    【讨论】:

    • 代码运行良好!我对如何启动它有点困惑,但是在查看了 readline() 上的注释后,我只是在上面的“if(interactive()) fun()”中添加了最后一行,它会自动启动提示。谢谢!
    • 这很好。但是,我一直试图准确地了解 unlist 和 strsplit 函数发生了什么。 R 在这里做什么?
    • @Seanosapien 如果用户在原始示例中键入“4,3,2,1”,则需要使用 strsplit 从输入中去除逗号。如果输入不是该格式,则没有必要。
    【解决方案2】:

    另请参阅utils 中的?menu 以获得简单的文本基本菜单界面和提示,这也用于devtools

    这是一个例子:

    > menu(c("Yes", "No"), title="Do you want this?")
    Do you want this? 
    
    1: Yes
    2: No
    
    Selection:
    

    【讨论】:

    • 但是,“菜单”功能只包括有限的选择。问题的输入是无限整数。
    【解决方案3】:

    既然这个问题起死回生了,大概是在写更新的答案吧。

    如果在这种情况下 GUI 有帮助的话,Shiny 包现在已经与 RStudio 很好地集成在一起,并且很容易将它作为一个 Shiny 应用程序来实现。网站http://shiny.rstudio.com 有更多信息,包括示例和文档。

    【讨论】:

      【解决方案4】:

      对于这种特殊情况,这可能有点过头了,但 swirl 包非常适合以交互方式向初学者介绍 R。

      swirl 是一个用于 R 编程语言的软件包 将 R 控制台变成交互式学习环境。用户收到 即时反馈,因为他们通过自定进度的课程得到指导 数据科学和 R 编程。

      可在此处找到生成内容的说明:http://swirlstats.com/instructors.html

      【讨论】:

        猜你喜欢
        • 2022-06-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-05-07
        • 2021-01-12
        • 1970-01-01
        • 2021-02-06
        相关资源
        最近更新 更多