Shiny中的子设置列表使用无功输入

时间:2017-01-09 20:07:38

标签: r list dataframe shiny subset

我有一个数据框列表:

dflist<- list(df_unemploy = "df_unemploy", df_apl = "df_apl")

并将矢量指标创建为:

indikator <- names(dflist)

并希望使用复选框

从此列表中对每个数据框进行分组
checkboxGroupInput('indicator', 
                     'Choose df:', 
                     names(dflist),
                     selected = names(dflist[1]))..

在我的 server.R 中,我正在尝试这样的事情:

indicator <- reaction$indicator
new_df <- dflist['indicator']
new_df <- as.data.frame(new_df)
return(new_df)

但我得到 NULL 值或警告: 警告:数据表中出错:&#39;数据&#39;必须是二维的(例如数据框或矩阵)

我尝试使用以下方法修复:

new_df <- as.data.frame(new_df)

server.R 的完整代码是:

library(shiny)
library(plyr)
library(dplyr)
library(ggplot2)


source("do_data.R")  # here dflist created
source("do_label.R") # here indicator created

# Load the dataset
loadData <- function() {
dflist <- dflist
return(dflist)
}

# Shared data
globalData <- loadData()

# Get raw data
getTable <- function(dflist, reaction){
indicator <- reaction$indicator
new_df <- dflist[['indicator']]
new_df <- as.data.frame(new_df)
return(new_df)   
}

shinyServer(function(input, output) { # server is defined within these      parentheses

localFrame <- globalData  

getReaction <- reactive({
return(list(indicator = input$indicator
))  })

output$ex1 = DT::renderDataTable({print(getTable(localFrame,  getReaction()))}, options = list(dom = 'Rlrtp',searchHighlight = TRUE , pageLength = 15, language = list(search = 'Filter:'), extensions = 'KeyTable')) # output table

})

我在这里缺少什么?

此致

1 个答案:

答案 0 :(得分:0)

子集无效,因为列表定义时列表对象保存为字符串,实际上所有这些都是数据集。

我改变了:

dflist<- list(df_unemploy = df_unemploy, df_apl = df_apl) 

并结合约翰保罗的回答:

dflist[['indicator']]

一切正常。

此致