r - 通过循环在 renderUI 中创建值框
问题描述
我想根据我拥有的数据创建一个值框。假设如果我有 5 个consumerdata
这样的数据变量,
id data number1 number2
1 k4j A 67 53
2 rls B 30 62
3 yv9 C 45 28
4 l6h D 63 47
5 f08 E 96 75
然后我需要用'name'和'number1'列创建5个值框。我没有显示任何数据,也没有错误。
代码
ui <- dashboardPage(
dashboardHeader(),
dashboardSidebar(
sidebarMenu(
menuItem("Consumer", tabName = "consumerdata")
)
),
dashboardBody(
tabItems(
tabItem(tabName = "consumerdata",
fluidRow(
tabBox(width = 12,
tabPanel("Label",
box(width = 12,
uiOutput("consumer")
)
)
)
)
)
)
)
)
server <- function(input,output) {
output$consumer <- renderUI({
lapply(consumerdata$name, function(i) {
valueBox(i,
consumerdata$number1, #here display number1 one by one like name
width = 4
)
})
})
}
shinyApp(ui = ui, server = server)
解决方案
您几乎到了那里,现在您可以遍历一系列数字而不是元素本身,然后将这些数字用作索引。
library(shiny)
library(shinydashboard)
ui <- dashboardPage(
dashboardHeader(),
dashboardSidebar(
sidebarMenu(
menuItem("Consumer", tabName = "consumerdata")
)
),
dashboardBody(
tabItems(
tabItem(tabName = "consumerdata",
fluidRow(
tabBox(width = 12,
tabPanel("Label",
box(width = 12,
uiOutput("consumer")
)
)
)
)
)
)
)
)
server <- function(input,output) {
output$consumer <- renderUI({
consumerdata <- head(mtcars) #comment this if you already have consumerdata defined
consumerdata$name <- rownames(consumerdata) #comment this if you already have consumerdata defined
consumerdata$number1 <- 1:6 #comment this if you already have consumerdata defined
lapply(1:length(consumerdata$name), function(i) {
valueBox(consumerdata$name[i],
consumerdata$number1[i], #here display number1 one by one like name
width = 4
)
} )
})
}
shinyApp(ui = ui, server = server)
推荐阅读
- javascript - 如何在 React 中使用特定 ID 进行 Axios 发布请求?
- angular - 无法运行测试并得到“您的一些测试完成了整页重新加载!”
- wpf - 我无法在 wpf C# 中水平对齐数据网格内的文本
- python - 如何在 ipywidgets / JupyterLab 中制作简单的绘图画布?
- amazon-web-services - 如果因无法执行“gcc”而失败,则在 gitlab ci 上构建
- vba - VBA选择多列的一部分
- c - 正整数如何存储在计算机内存中?它们的 2 的补码存储为内存中的负整数还是它们的二进制等价物?
- javascript - Angular PWA 重定向到错误的文件
- sql - 如何在 int 列表上按位执行
- java - 如何使引导程序与 Spring mvc 一起工作?