[英]Extract element names from a vector within list
我正在構建一個閃亮的應用程序,我想在列表中提取向量值的名稱以在情節標題中使用。
我有這個帶有變量名稱的列表:
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”,但不適用於其他變量。
為什么這不起作用? 有人知道如何運行它嗎?
對不起,我的英語,非常感謝,提前。
由於它是命名vector
的list
,我們可以使用lapply/sapply
循環遍歷list
,在比較后提取向量的names
並將list
元素unlist
list
到vector
(如果需要)
unlist(sapply(vars, function(x) names(x[x == "ano"])))
它適用於“distritos”示例,因為它只是一個長度為 1 的字符向量 - 所以當你vars[vars == "distritos"]
它匹配該向量的值。
您需要檢查列表中的名稱(而不是每個單獨字符向量的名稱),或者您需要使用以下內容查看較低級別:
l <- "ano"
names(vars[sapply(vars, function(x) l %in% x)])
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.