在R语言中按规则将dataframe数据分类存入命名列表的问题
修正后的R代码及问题说明
原代码存在的问题
- 拼写错误:循环末尾append的变量写成了
or,实际应该是org - 未给列表元素命名,导致输出没有按要求的分组名称区分
- 多关键词匹配逻辑错误:当关键词是向量(比如"EMERITUS"和"BROOKDALE"),
str_detect无法直接识别向量格式的匹配条件,需要转为正则表达式的"或"模式
修正后的代码
# 定义分组名称与对应关键词的映射(用命名列表直接绑定,避免序号对应出错) group_defs <- list( "BAYSHIRE" = "BAYSHIRE", "EMERITUS, BROOKDALE" = c("EMERITUS", "BROOKDALE"), "AGEMARK" = "AGEMARK" ) big_organization <- list() # 遍历每个分组定义 for (group_name in names(group_defs)) { keywords <- group_defs[[group_name]] # 将多关键词转为正则"或"模式,适配str_detect的匹配规则 pattern <- paste(keywords, collapse = "|") org <- tidy2 %>% filter(str_detect(Licensee, pattern) | str_detect(Facility_name, pattern)) %>% select(Facility_number, Facility_name, Licensee) # 直接给列表的命名元素赋值,避免append拆分数据框的问题 big_organization[[group_name]] <- org } big_organization
代码说明
- 用**命名列表
group_defs**直接绑定分组名称和对应关键词,不用再手动对应序号,逻辑更清晰 - 把多关键词拼接成
"EMERITUS|BROOKDALE"的正则格式,让str_detect能同时匹配多个关键词 - 通过
big_organization[[group_name]] <- org直接给列表元素命名,保证输出是按要求分组的命名列表 - 修正了拼写错误,同时避免
append可能导致的数据框拆分行的问题
内容的提问来源于stack exchange,提问作者Phyllis
相关产品推荐
相关产品推荐

