[英]Extract contents from a nested list in R
我將客戶數據存儲在R中的嵌套列表中,其方式與此相同:
myinventedlist <- list("LOLETE" = list("Name" = "LOLETE",
"location" = "Huelva",
"Employees" = "22",
"SM" = "eJeK1",
"Groups" = list("ABUELOs" = list("PICHI" = list("fab_name" = "Pichi (ES)", "fab_id" = "2323423ES", "fab_tarif" = "6A"),
"PACHA" = list("fab_name" = "Pacha (AG)", "fab_id" = "1231212AG", "fab_tarif" = "6A"),
"POCHO" = list("fab_name" = "Pocho (ED)", "fab_id" = "2132192ED", "fab_tarif" = "6A")),
"PRIMOts" = list("MONGO" = list("fab_name" = "MONGO (LB)", "fab_id" = "21332238LB", "fab_tarif" = "6A"),
"MINGO" = list("fab_name" = "MINGO (NT)", "fab_id" = "22231220NT", "fab_tarif" = "6B"),
"MUNGO" = list("fab_name" = "MUNGO (CQ)", "fab_id" = "23215001CQ", "fab_tarif" = "6B")))),
"GUPERA" = list("Name" = "GUPERA",
"location" = "Madrid",
"Employees" = "113",
"SM" = "1xa3P",
"Groups" = list("ABUELOs" = list("YYTER" = list("fab_name" = "YYTER (MM)", "fab_id" = "2323423MM", "fab_tarif" = "6A"),
"LOLE" = list("fab_name" = "LOLE (NN)", "fab_id" = "1231212NN", "fab_tarif" = "6A"),
"PEEE" = list("fab_name" = "PEE (EE)", "fab_id" = "2132192EE", "fab_tarif" = "6A")))))
我想從給定名稱的cliente中提取一個帶有所有“ fab_id”的向量(在本例中為“ LOLETE”或“ GUPERA”)。
我可以從某個客戶端訪問所需的內容,即所有“ fab_id”,但這是一種可怕的方式:
cliente <- "LOLETE"
firstindex <- which(names(myinventedlist) == eval(cliente))
secondindex <- which(names(myinventedlist[[firstindex]]) == "Groups")
sapply(myinventedlist[[firstindex]][[secondindex]][[1]], "[[", "fab_id")
sapply(myinventedlist[[firstindex]][[secondindex]][[2]], "[[", "fab_id")
這使:
PICHI PACHA POCHO
"2323423ES" "1231212AG" "2132192ED"
MONGO MINGO MUNGO
"21332238LB" "22231220NT" "23215001CQ
我希望給定客戶我可以恢復所有“ fab_id”,而不必考慮它們所屬的“組”。 客戶端作為字符串傳遞。
換句話說,我希望能夠獲得列表中某個標題(例如“ fab_name”)下標記的所有元素值,盡管它們可能會包含在嵌套列表(例如“ Groups”)中。
我想嘗試一下,問是否在此類列表中存儲將在項目中遞歸使用的數據,將客戶端命名為“ CLIENT01”,然后在列表中添加字段“ clien_name”是好事,還是可以直接使用客戶端名稱來命名列表。 典型的做法是什么?
歡迎使用這種方式在R中使用列表的任何良好鏈接。
提前致謝!
unlist
,然后按名稱grepl
命名子集:
res <- unlist(myinventedlist[[ cliente ]])
res[ grepl("fab_id", names(res)) ]
# Groups.ABUELOs.PICHI.fab_id Groups.ABUELOs.PACHA.fab_id Groups.ABUELOs.POCHO.fab_id Groups.PRIMOts.MONGO.fab_id
# "2323423ES" "1231212AG" "2132192ED" "21332238LB"
# Groups.PRIMOts.MINGO.fab_id Groups.PRIMOts.MUNGO.fab_id
# "22231220NT" "23215001CQ"
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.