创建提示/应答系统以将数据输入到R中

Vin*_*woo 78 r

我已经创建了一些R代码供那些对R一无所知的人使用(虽然我自己很漂亮).我一直让人们将初始数据粘贴到R控制台(结果混合),我希望为人们设置一种更友好的用户输入数据的方式.

理想情况下,有人可以坐在控制台上,键入命令,并提示有关如何输入数据的特定问题.

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

What is x value?
Run Code Online (Sandbox Code Playgroud)

该人员输入:

2
Run Code Online (Sandbox Code Playgroud)

下一个提示:

What is y value?
Run Code Online (Sandbox Code Playgroud)

人员类型:

3
Run Code Online (Sandbox Code Playgroud)

下一个提示:

 What are T values?
Run Code Online (Sandbox Code Playgroud)

人员类型:

 4,3,2,1
Run Code Online (Sandbox Code Playgroud)

下一个提示:

什么是V值?

人员类型:

4,5,6,9
Run Code Online (Sandbox Code Playgroud)

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

X+Y
V+T
Run Code Online (Sandbox Code Playgroud)

在控制台中弹出答案

5
8 8 8 10
Run Code Online (Sandbox Code Playgroud)

每个人都很开心

我道歉,因为这不是一个可重现的代码问题,但我不知道如何让R问问题而不是我问R问题!

Cha*_*ase 70

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

}
Run Code Online (Sandbox Code Playgroud)

  • 代码很棒!我对如何启动它感到有点困惑,但在查看readline()上的注释之后,我只是在上面的"if(interactive())fun()"中添加了最后一行,它会自动启动提示.谢谢! (2认同)

pat*_*ckm 47

另见?menuutils一个简单的文本基础菜单界面和提示,这也在使用devtools.

这是一个例子:

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

1: Yes
2: No

Selection:
Run Code Online (Sandbox Code Playgroud)


sha*_*ker 7

由于这个问题是从死里复活的,所以可能会写一个更新的答案.

如果在这种情况下GUI完全有用,那么Shiny软件包现在可以很好地与RStudio集成,并且很容易将其实现为Shiny应用程序.网站http://shiny.rstudio.com有更多信息,包括示例和文档.


dnl*_*rky 5

对于这种特殊情况,这可能有点过头了,但是这个swirl包很适合交互式地将R引入初学者.

swirl是R编程语言的软件包,可将R控制台转变为交互式学习环境.用户可以通过数据科学和R编程中的自学课程获得即时反馈.

有关生成内容的说明,请访问:http://swirlstats.com/instructors.html.