【发布时间】:2019-07-13 10:46:01
【问题描述】:
是否可以通过调用列表中的数据框来填充“selectInput”的选项(值)?这将有助于加快脚本的编写速度并省略冗长的选择。
我的 app.R 文件夹中有一个文件夹(选项)。此文件夹包含 15 个 .xlsx (Excel) 文件,每个文件包含两列 (x=id,y=value)。
llist<-list.files(pattern=“*.xlsx”)
df_list<-lapply(list,readxl::read_excel)
这会返回一个数据框列表(例如):
2 人名单 $ 001.txt:'data.frame': 15 obs。 2个变量: ..$ X:因子 w/ 50 个级别 ..$ Y:因子 w/ 50 个级别 $ 002.txt:'data.frame': 5 obs。 2个变量 ..$ X:因子 w/ 5 个级别 ..$ Y:5 个级别的因子
当我尝试调用这些值(相关数据框的第二列)时,应用程序失败说选择必须有一个值。
selectInput (“state”, “States:”,
df_list[2][[2]]),
selectInput (“cnfd”, “Confidence”,
df_list[7][[2]])
...
str (df_list[2])
df x: 1,2,3,4,5...50 y:阿拉斯加、阿拉巴马、阿肯色……
str(df_list[7]
df x: 1,2,3,4,5 y:‘非常低’、‘低’、‘中等’、‘高’、‘非常高’
有什么想法吗?
===========更新================
想确保我列出了正确的结构:
str(df_list)
List of 4
$ :Classes ‘tbl_df’, ‘tbl’ and 'data.frame': 5 obs. of 2 variables:
..$ id : num [1:5] 1 2 3 4 5
..$ value: chr [1:5] "very low" "low" "moderate" "high" ...
$ :Classes ‘tbl_df’, ‘tbl’ and 'data.frame': 45 obs. of 2 variables:
..$ id : num [1:45] 1 2 3 4 5 6 7 8 9 10 ...
..$ value: chr [1:45] "George Washington" "John Adams" "Thomas Jefferson" "James Madison" ...
$ :Classes ‘tbl_df’, ‘tbl’ and 'data.frame': 50 obs. of 2 variables:
..$ id : num [1:50] 1 2 3 4 5 6 7 8 9 10 ...
..$ value: chr [1:50] "Alabama" "Alaska" "Arizona" "Arkansas" ...
$ :Classes ‘tbl_df’, ‘tbl’ and 'data.frame': 196 obs. of 2 variables:
..$ id : num [1:196] 1 2 3 4 5 6 7 8 9 10 ...
..$ value: chr [1:196] "Kabul" "Tirana" "Algiers" "Andorra la Vella"...
闪亮应用:
load('C:/Users/me/OneDrive/Documents/RProj/apps/data/dfenv.RData')
ui <- fluidPage(
titlePanel("Testing selectInput with list of data-frames"),
sidebarLayout(
sidebarPanel(
selectInput("state","States:",
df_list[3][2]),
selectInput("cty","Capital City:",
df_list[4][2]),
selectInput("cnf","Confidence:",
df_list[1][2]),
selectInput('potus',"President:",
df_list[2][2])
)))
server <- function(input, output) {
}
shinyApp(ui = ui, server = server)
错误:
(函数(选择,名称)中的错误: “choices”中的所有子列表都必须命名。
【问题讨论】:
-
只要 df_list 对象在范围内,我认为这应该可以工作。我对我的应用程序中的选择输入做了类似的事情。您在哪里编写了两行代码来创建 df_list 对象?也可能再试一次,但指定参数名称以选择输入,即 id= label=choices=