2010-08-26 69 views
5

我正在使用下面的代码来开发我一直在开发的股票价格应用程序(在这里有很多人的帮助,非常感谢!)。的事情之一,它应该做的是让用户选择一个公司从存储的XML文件来分析,我一直在使用下面的代码来做到这一点:在R中的下拉列表实现

df <- xmlToDataFrame(file.choose()) 

而不是使用file.choose(){为显然这个对话框揭示了很多系统结构},有人建议使用一个下拉菜单,列出公司和文件的链接。

在R中是否可能存在这样的事情,并且有没有实现它的简单方法?

+0

有list.files()列出目录的所有文件,例如:list.files(getwd())会将其限制到您的工作目录。我知道,它不是互动的,但也许你会做一些事情。也许在建立在http helpserver的帮助下。 – 2010-08-26 10:30:56

+0

查看[this](http://bioinf.wehi.edu.au/~wettenhall/RTclTkExamples/DropDown.html)。还有这[相关的问题](http://stackoverflow.com/questions/2540232/how-to-allow-multiple-inputs-from-user-using-r)。 – 2010-08-26 10:50:44

回答

7

select.list允许您从列表中进行选择。也请检查menu

例子:

使用menu

companies <- c("AAA","BBB","CCC") 
links <- c("c:/file1","c:/secret/file3","c:/file3") 

i <- menu(companies, graphics=TRUE, title="Choose company") 
df <- xmlToDataFrame(links[i]) 

使用select.list

companies <- c("AAA","BBB","CCC") 
links <- c("c:/file1","c:/secret/file3","c:/file3") 

i <- select.list(companies, title="Choose company") 
df <- xmlToDataFrame(links[companies==i]) 

如果你想显示的名称和列表链接,然后使用

menu_items <- paste(companies, " (", links, ")", sep="") 
i <- select.list(menu_items, title="Choose company") 
df <- xmlToDataFrame(links[menu_items==i]) 
+0

好吧,从R内工作。但是,当我从批处理文件使用Rscript运行它不起作用。是否有额外的软件包/我应该使用的代码? – 2010-08-26 11:17:34

+0

'xmlToDataFrame'位于'RSXML'包中。你是否已经为在批处理模式下调用的R版本安装了? – 2010-08-26 11:59:19

+0

@Anthony号是预期的行为。从'?menu':“在非交互式会话中使用'menu'是错误的。”你可以尝试tcltk包中的'tk_select.list'。 – Marek 2010-08-26 12:40:45

3

如果您不想进入tcltk编程,请尝试使用gWidgets软件包。

library(gWidgetstcltk) # or library(gWidgetsRGtk2), etc. 
drp <- gdroplist(c("AAA", "BBB", "CCC"), container = gwindow())