繁体   English   中英

R:列出Shiny selectInput中可用的唯一值列表

[英]R: making a list of unique values usable in Shiny selectInput

我正在开发一个小型的Shiny App,它可以访问一些公开的劳动力市场数据。 我有一个相对简单的长格式数据集,类似于下面的摘录:

数据

Geography Measure    Time  Value
ABC       Measure A  2010  3
ABC       Measure A  2011  4
ABC       Measure A  2013  5
ABC       Measure B  2010  0.2
ABC       Measure B  2011  4
DEF       Measure A  2010  4
DEF       Measure A  2011  8
DEF       Measure A  2012  7
DEF       Measure B  2010  8
DEF       Measure B  2010  7

我打算生成一个简单的图表,我想使用selectInput方法为最终用户提供一种过滤表格和相应数据的便捷方式。 因此,我希望selectInput包含从我打算应用过滤器的列派生的唯一值列表。 Measure列的示例中,我使用以下代码获取唯一值列表:

## Create list of unique measures
lst.measures <- as.list(unique(dta$Measure))

但是当我尝试使用下面的代码将获得的列表引入Shiny ui.R

  # Selection of the available indicators
  selectInput("selectVariable", label = h3("Select box"), 
              choices = lst.measures, 
              selected = 1)
),

生成的列表不包含所需的文本(度量A,度量B),但是包含数字列表,如下图所示(我在数据中的测量值比在样本数据中更多): 样品清单

我猜这个问题与目前列表的结构有关

> as.list(unique(dta.nom$Measure))
[[1]]
[1] Measure A
Levels: Measure A Measure B

[[2]]
[1] Measure B
Levels: Measure A Measure B

因此,我的问题是: 如何重新排序列表中的元素,以便生成的列表可以以有意义的方式传递给selectInput ,显示与所选列的唯一值对应的文本值?

尝试将dta.nom$Measure转换为character

dta.nom$Measure = as.character(dta.nom$Measure)

除此之外,我不确定您是否确实需要将列表传递给selectInput。

# Create list of unique measures
#lst.measures <- as.list(unique(dta$Measure))
lst.measures <- unique(dta$Measure)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM