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"])))