如何通过编程从许多输入生成data.frame?
我正在尝试创建一个闪亮的应用程序,它有大约100个用户输入,其中一些可能不会被触及。我想我可以在应用程序中创建一个反应式数据框,通过编写如何通过编程从许多输入生成data.frame?,r,shiny,R,Shiny,我正在尝试创建一个闪亮的应用程序,它有大约100个用户输入,其中一些可能不会被触及。我想我可以在应用程序中创建一个反应式数据框,通过编写input$user\u input\u 1,input$user\u input\u 2,等100次来分别调用每个输入。相反,我想知道是否有一种方法可以使用连接函数以编程方式生成输入列表,然后像键入input$user\u input\u 1一样计算这些输入。但是,当我运行以下代码时,我收到一条消息,告诉我错误:找不到对象“input” 我的最终目标是能够获取
input$user\u input\u 1
,input$user\u input\u 2
,等100次来分别调用每个输入。相反,我想知道是否有一种方法可以使用连接函数以编程方式生成输入列表,然后像键入input$user\u input\u 1
一样计算这些输入。但是,当我运行以下代码时,我收到一条消息,告诉我错误:找不到对象“input”
我的最终目标是能够获取这些用户输入,并在一些幕后转换中使用它们。如果我当前的设置不是捕获大量输入的最有效方法,请让我知道,但至少我想了解什么在这里不起作用
我非常感谢你的帮助。谢谢
库(闪亮)
图书馆(tidyverse)
输入tbl%
映射(~parse(text=.x))%>%
地图(评估)
)
})
输出$table证明我使用了错误的评估函数
我需要使用map(eval)
,而不是map(eval.parent)
如果我没弄错的话,您可以在一行代码中使用purr::map_df
实现您想要的结果,如下所示:
server <- function(input, output) {
value_tbl <- eventReactive(
eventExpr = input$number_x,
valueExpr = {
map_df(input_tbl$inputs, ~ data.frame(inputs = .x, values = input[[paste0("number_", .x)]]))
})
output$table <- renderPrint(value_tbl())
}
服务器这是一个比我自己的解决方案优雅得多的解决方案。谢谢你,斯蒂芬。