簡體   English   中英

從列表中的向量中提取元素名稱

[英]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”,但不適用於其他變量。

為什么這不起作用? 有人知道如何運行它嗎?

對不起,我的英語,非常感謝,提前。

由於它是命名vectorlist ,我們可以使用lapply/sapply循環遍歷list ,在比較后提取向量的names並將list元素unlist listvector (如果需要)

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM