88

我创建了一些 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 的问题!

4

4 回答 4

79

由于这应该仅用作交互式代码,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))

}
于 2012-06-13T02:23:16.853 回答
75

另请参阅?menufromutils以获得简单的文本基本菜单界面和提示,它也用于devtools.

这是一个例子:

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

1: Yes
2: No

Selection:
于 2016-12-19T17:27:12.997 回答
7

由于这个问题从死里复活,它可能正在写一个更新的答案。

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

于 2014-10-12T03:15:32.493 回答
5

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

swirl 是用于 R 编程语言的软件包,可将 R 控制台变成交互式学习环境。在数据科学和 R 编程方面的自定进度课程指导用户时,用户会收到即时反馈。

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

于 2014-12-21T03:32:25.550 回答