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


82

我创建了一些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

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

X+Y
V+T

然后在控制台中弹出答案

5
8 8 8 10

每个人都很高兴

我很抱歉,这不是一个可重现的代码问题,但是我不确定如何使R提出问题而不是向我提出有关R的问题!

Answers:


74

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

}

3
该代码很好用!我对如何启动它有些困惑,但是在阅读了readline()的注释后,我只是在上面的“ if(interactive())fun()”中添加了最后一行,它会自动启动提示。谢谢!
Vinterwoo 2012年

1
很好 但是,我一直试图完全理解unlist和strsplit函数的功能。R在这里做什么?
Seanosapien's

1
@Seanosapien如果用户像原始示例中那样输入“ 4,3,2,1”,则必须使用strsplit将逗号从输入中去除。如果输入格式不是这种格式,则没有必要。
劳伦·菲奇

58

另请参阅?menuutils,以获取简单的文本菜单菜单界面和提示,该界面也用于中devtools

这是一个例子:

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

1: Yes
2: No

Selection:

7

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

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


5

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

spiral是R编程语言的软件包,它将R控制台变成了交互式学习环境。在数据科学和R编程的自学课程中,用户将获得即时反馈。

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.