R:制作在Shiny selectInput中可用的唯一值列表

Kon*_*rad 5 r list unique dataframe shiny

我正在开发一个小型的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
Run Code Online (Sandbox Code Playgroud)

我打算生成一个简单的图表,我想使用该selectInput方法为最终用户提供一种方便的方式来过滤表和相应的数据。因此,我希望selectInput包含一个列表,这些列表是从我打算对其应用过滤器的列中派生的唯一值的列表。在“ 测量”列的示例中,我使用以下代码获取唯一值的列表:

## Create list of unique measures
lst.measures <- as.list(unique(dta$Measure))
Run Code Online (Sandbox Code Playgroud)

但是当我尝试ui.R使用以下代码将获得的列表介绍给Shiny时:

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

生成的列表不包含所需的文本(小节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
Run Code Online (Sandbox Code Playgroud)

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

Pew*_*ewi 5

尝试转换dta.nom$Measure为character

dta.nom$Measure = as.character(dta.nom$Measure)
Run Code Online (Sandbox Code Playgroud)

从我的头脑中,我不确定您是否确实需要将列表传递给 selectInput。

# Create list of unique measures
#lst.measures <- as.list(unique(dta$Measure))
lst.measures <- unique(dta$Measure)
Run Code Online (Sandbox Code Playgroud)

  • 你当然可以。符号 ` c("Cylinders" = "cyl", "Transmission" = "am")` 使 selectInput 的选项对用户显示为“Cylinders”和“Transmission”。在内部,用户所做的选择被翻译为“cyl”和“am”。重要的当然是内在的价值观。如果您可以让用户看到变量名称而不是标签,那么仅提供单个向量就没有什么好处。 (2认同)