【发布时间】:2016-11-04 13:55:02
【问题描述】:
我无法重现我的数据,因此我将提供类似的样本数据:
lst1 <- list(IT = c("Training", "Helpdesk"), Construction = c("Water", "Waste"))
lst2 <- list(Training = c("Alarm Engineer", "Backend Engineer"),
Helpdesk = c("Analyst 1", "Analyst 2"),
Water = c("Water 1", "Water 2"),
Waste = c("Waste 1", "Waste 2", "Waste 3"))
lst3 <- list(`Alarm Engineer` = head(mtcars), `Backend Engineer` = head(VADeaths),
`Analyst 1` = head(diamonds), `Analyst 2` = head(ChickWeight),
`Water 1` = head(state.x77), `Water 2` = head(iris),
`Waste 1` = head(CO2), `Waste 2` = head(cbind(letters, LETTERS)),
`Waste 3` = state.abb)
首先(lst1)我有一个长度为 35 的小嵌套列表:
head(dis_sub, 2)
$IT
[1] "Web Developer" "Web Designer" "Training" "Testing" "Technician" "Technical Support"
[7] "Systems Engineer" "Systems Analyst" "Helpdesk"
$Construction
[1] "Water" "Waste" "Sustainability" "Structural Engineer" "Skilled Trades"
[6] "Site Manager" "Mechanical and Electrical"
然后我有第二个长度为 250 (lst2) 的嵌套列表:
head(sub_jobs, 2)
$Mechanical and Electrical
[1] "Alarm Engineer" "Backend Engineer" "Biomass Engineer"
[4] "Building Engineer" "Cam Engineer" "Electrician"
$Helpdesk
[1] "1st Line Analyst" "1st Line Desktop Support Analyst" "1st Line Engineer" "1st Line Helpdesk"
[5] "1st Line Helpdesk Support" "1st Line IT Support" "1st Line IT
然后我有一个最终列表(lst3),这个列表是一个数据框列表,所有数据框都有一个公共变量,但有不同数量的观察:
head(list_all, 2)
$Electrician
words
1 17th edition
2 17th edition qualification
3 17th edition qualified
4 3 phase
5 access point
$1st Line Helpdesk Support
words
1 1st line technical support
2 2nd line support team
3 2nd line technical support
现在您可能已经发现,在第一个列表中,我们在 IT 下看到了帮助台。在建设中,我们看到机械和电气
我想把这些从字符变成列表二中的列表。
然后,我们在机械和电气下的列表 2 中看到电工,在帮助台下,我们看到 1st Line Helpdesk Support。然后,我希望将这些字符转换为列表 3 中的 data.frames。
列出我制作的清单并从那里开始可能对我来说很愚蠢。我显然可以制作 35 和 250 的简单列表,而且我也有一个数据框,例如:
dis sub norm
IT Helpdesk 1st Line Helpdesk Support
IT Helpdesk Analyst
IT Testing Tester
Construction Mech... Electrician
Construction Mech.. Alarm Engineer
Construction Waste Recycling Engineer
然后是一个充满 csv 的文件夹,每个文件夹都以上面的每个规范行命名,并包含用于制作列表 3 中 data.frames 列表的 data.frames。
我想要的是:
>List
$IT
Helpdesk
1st Line Helpdesk Support
1 1st line technical support
2 2nd line support team
3 2nd line technical support
...
Analyst
...
...
Web developer
...
...
...
$Construction
Mechanical and Electrical
Electrician
1 17th edition
2 17th edition qualification
3 17th edition qualified
【问题讨论】:
-
有人能解释为什么这会收到反对票吗?我认为我很清楚,并提供了我的数据示例供其他人复制?
-
试试
lapply(dis_sub, function(x) lapply(sub_jobs[x], function(.x) list_all[.x])) -
它确实有效。我可以给你看。
-
那是因为你的名字不完全匹配。例如,您在一个列表中有
Mechanical & Electrical,在另一个列表中有Mechanical and Electrical。 -
你说得对,我很抱歉,我没有删除 list_all 中的空格,所以该列表中的名称与 dis_sub 和 sub_jobs 不匹配,这解释了我的空值。
标签: r list dataframe nested-lists