gpt4 book ai didi

r - R Shiny 中的自动 GUI 生成

转载 作者:行者123 更新时间:2023-12-01 14:41:22 25 4
gpt4 key购买 nike

我遇到的问题是我无法在 Shiny 中自动生成 GUI。这个想法是查看有多少文件并为每个文件生成一组图像+按钮。我相信这个问题的解决方案是 R 中任何 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 输出(如右击/查看页面源代码所示)是:

<button id="sug1" type="button" class="btn action-button">
<div id="sug1" class="shiny-image-output" style="width: 100px ; height: 100px"></div>
First
</button>

我不知道如何生成它,因为我不知道如何以及在何处插入对图像的引用。

希望得到帮助。

最佳答案

感谢 Jeff 在评论区的帮助,我得到了一些循环生成 UI 元素的东西。

整个技巧是有一个 renderUI 函数,里面有一个 for 循环,它累积列表中的元素,在我的例子中是:

LL[[i]] <- list(actionButton(txt,icon=imageOutput(pp,width="100px",height="100px"),label=dir))

此列表必须由函数返回。所有这些都在 server.R 中。在 ui.R 中应该这样写:

uiOutput(nameOfTheFunctionThatReturnedTheList)

但我的问题仍然是我无法使用相同的循环显示图像...帮助任何人? ;)

关于r - R Shiny 中的自动 GUI 生成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23226627/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com