如何有效地计算嵌套列表中的项目?例如,我有一个标题名称列表,例如:
header.names <- list(list("Post Unique Reference", "Name", "Grade (or equivalent)", "Job Title", "Date", "Date"),
list("Name", "Organisation", "Unit", "Reporting Senior Post", "Grade", "Date"))
我想计算标头出现次数的统计数据。
一种简单的方法可能是
require(stringr)
sum(str_count(unlist(header.names), "Date"))
然而:
答案 0 :(得分:1)
扩展Zbynek的观点:
由于应忽略列表中每个元素内的重复项,因此需要使用唯一值循环遍历列表。
unique_headers <- lapply(header.names, unique)
要一次处理所有内容,最简单的方法是将列表展平,这样您就可以使用矢量化解决方案。由于您不关心元素的名称,因此可以通过传递use.names = FALSE
来获得适度的性能提升。
flat_headers <- unlist(unique_headers, use.names = FALSE)
最后,您要计算列表中的元素。根据最适合您的输出格式,您可以从table
选择count
或plyr
。
table(flat_headers)
library(plyr)
count(flat_headers)
非精确匹配是一门艺术:你需要考虑一下你的数据是什么以及允许匹配的模糊程度,以便得到你想要的答案。
例如,是否将括号内的所有内容都剥离好用于您的用例?
标题名称的例子是否只有大小写不同?
是否有拼写错误的标题名称?