R 从列表中的向量中提取元素名称

R 从列表中的向量中提取元素名称,r,R,我正在构建一个闪亮的应用程序,我想在一个列表中提取一个向量值的名称,以便在绘图标题中使用 我有一个变量名列表: vars <- list( acidentes = c("Veículo" = "veic", "Tipo de acidente" = "tipo_acid", "# ciclistas" = "ciclistas"), vitimas = c("Sexo" = "sexo", "Idade" = "idade"), tempo =

我正在构建一个闪亮的应用程序,我想在一个列表中提取一个向量值的名称,以便在绘图标题中使用

我有一个变量名列表:

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" 
vars它适用于“distritos”示例,因为这只是一个长度为1的字符向量-因此当您
vars[vars==“distritos”]
时,它与该向量的值匹配

您需要检查列表中的名称(而不是每个单独字符向量的名称),或者需要使用以下内容查看较低级别:

l <- "ano"
names(vars[sapply(vars, function(x) l %in% x)])

l由于它是一个名为
向量的
列表
,我们可以使用
lapply/sapply
在比较后提取向量的
名称
,并
取消列出
列表
元素到
向量
(如有必要)


你需要
unlist(sapply(vars,function(x)name(x[x==“ano”]))
这正是我想要的,@akrun。非常感谢!这将返回“tempo”,即搜索值所在向量的名称,而不是向量元素名称。akrun解决方案正在运行。谢谢你的帮助。
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"
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
l <- "ano"
names(vars[sapply(vars, function(x) l %in% x)])
unlist(sapply(vars, function(x) names(x[x == "ano"])))