我正在构建一个闪亮的应用程序,我想在列表中提取矢量值的名称以用于绘图标题。
我有一个带有变量名的列表:
vars <- list(
acidentes = c("Veículo" = "veic", "Tipo de acidente" = "tipo_acid",
"# ciclistas" = "ciclistas"),
vitimas = c("Sexo" = "sexo", "Idade" = "idade"),
tempo = c("Ano" = "ano", "Mes" = "mes", "Dia da semana" = "dia_semana",
"Hora do dia" = "hora_dia", "Período do dia" = "periodo_dia"),
geo = c("Distritos" = "distritos")
)
vars
$acidentes
Veículo Tipo de acidente # ciclistas
"veic" "tipo_acid" "ciclistas"
$vitimas
Sexo Idade
"sexo" "idade"
$tempo
Ano Mes Dia da semana Hora do dia Período do dia
"ano" "mes" "dia_semana" "hora_dia" "periodo_dia"
$geo
Distritos
"distritos"
在闪亮的内部,我的尝试是:
l <- names(vars[vars == input$variavel])
n <- names(vars[[l]])[vars[[l]] == input$variavel]
tit <- paste("Taxa média de fatalidade, por", n)
我不明白为什么,但是当我选择的是“ distritos”变量而不是另一个变量时,这是可行的。
如果我在带有“ distritos”的闪亮环境之外运行此代码,我会得到:
l <- names(vars[vars == "ano"])
n <- names(vars[[l]])[vars[[l]] == "distritos"]
paste("Taxa média de fatalidade, por", n)
[1] "Taxa média de fatalidade, por Distritos"
但是,如果我调用另一个变量,例如“ anos”,它将无法正常工作。
l <- names(vars[vars == "anos"])
n <- names(vars[[l]])[vars[[l]] == "anos"]
Error in vars[[l]] : attempt to select less than one element in get1index
我尝试使用vars[vars == "anos"]
和vars[vars %in% "anos"]
,结果是相同的。适用于“ distritos”,但不适用于其他变量。
为什么这不起作用? 有人对如何执行此操作有想法吗?
对不起,我要说英语,谢谢。
答案 0 :(得分:1)
由于它是一个名为list
的{{1}},因此我们可以在vector
上遍历list
,并在比较后提取向量lapply/sapply
并将names
的{{1}}元素unlist
(如有必要)
list
答案 1 :(得分:0)
它与“ distritos”示例一起使用,因为它只是一个长度为1的字符向量-因此,当您vars[vars == "distritos"]
时,它与该向量的值匹配。
您需要检查列表中的名称(而不是每个单独的字符向量的名称),或者需要使用类似以下的内容查看较低的级别:
l <- "ano"
names(vars[sapply(vars, function(x) l %in% x)])