【发布时间】:2014-06-07 05:50:06
【问题描述】:
我遇到的问题是我无法在 Shiny 中自动生成 GUI。这个想法是查看有多少文件并为每个文件生成一组图像+按钮。我相信这个问题的解决方案是 R 中 ANY GUI 生成的解决方案。
我可以静态地执行此操作,为每个按钮和图像编写代码,但是将其放入 for 循环或在 server.R 中呈现图像并将其作为 HTML 传递给ui.R.我会在下面解释。
我要生成的代码是:
actionButton("sug1",icon=imageOutput("sug1",width="100px",height="100px"),label="First")
这给了我一个 100x100 的可点击图片。
我尝试了以下方法:
1) 用 ui.R 内的 for 循环将其包围,并使 ID("sug1") 和标签成为变量,其中最后一个数字在每个循环中递增。
2) 将结果累加,使用 server.R 中的 HTML() 函数稍后在 ui.R 中输出
output$generateImages <- renderUI({
(...)
for(...){
(...)
w <- paste(w, actionButton(paste("oc",which(dir==folders)),label=dir))
}
HTML(w)
})
然后在 ui.R 中我希望它出现的地方:
htmlOutput("generateImages")
3) 我猜想使用 HTMLoutput 或 UIOutput 应该会有所帮助,但鉴于我的代码生成的 HTML 输出(如在右侧的 tlick/view 页面源代码中所见)是:
<button id="sug1" type="button" class="btn action-button">
<div id="sug1" class="shiny-image-output" style="width: 100px ; height: 100px"></div>
First
</button>
我不知道如何生成这个,因为我不知道如何以及在何处插入对图像的引用。
不胜感激。
【问题讨论】:
-
我想你想要
tagList,可能还有renderUI。如果您花一点时间熟悉apply系列函数,我希望您可以使用tagList(lapply( <your code here>))。 -
我以后如何将它与“听众”联系起来?知道我可以在哪里获得更多帮助,因为似乎没有人对 stackoverflow 做出回应! :(
-
谢谢杰夫!我会检查链接!到目前为止,我已经看到了闪亮的高级示例,似乎没有一个具有我想要做的事情。呃……
-
嘿,我浏览了教程并发布在邮件列表中,但没有找到这样的示例,教程中也没有解释如何围绕 renderImage 或使用 for 循环来渲染 UI,以及以后如何在 af 或 loop 或类似的东西中接收这些参数。那里的一切都只展示了如何静态放置图像,而不是如何动态生成 UI :(。我完全迷路了。
标签: r user-interface shiny shiny-server