R语言如何基于字符串列表生成适配特征集的回归公式
R生成符合需求的回归公式解决方案(基于dplyr)
完整可运行代码
library(dplyr) library(stringr) # 原始变量定义 n <- 'winner' p_list <- c('qualified', 'female', 'apple') df_features <- c('female','qualified','admission','apple_B','apple_C','apple_D') # 步骤1:生成特征-前缀映射表 feature_mapping <- tibble(feature = df_features) %>% # 提取下划线前的前缀,无下划线的特征前缀为自身 mutate(prefix = str_remove(feature, "_.*")) # 步骤2:匹配p_list对应的所有自变量 final_predictors <- p_list %>% lapply(function(item) { filter(feature_mapping, prefix == item) %>% pull(feature) }) %>% unlist() %>% unique() # 避免重复变量进入公式 # 步骤3:生成回归公式 reg_formula <- as.formula(paste(n, "~", paste(final_predictors, collapse = " + ")))
输出验证
打印reg_formula即可得到你需要的结果:
winner ~ female + qualified + apple_B + apple_C + apple_D
逻辑说明
- 无需单独判断
p_list元素是否存在于df_features:对于本身就在特征列表里的变量(如female、qualified),前缀匹配只会取出变量本身,不会产生多余结果;对于需要前缀匹配的变量(如apple),会自动取出所有前缀匹配的特征。 - 如果需要和示例完全一致的自变量顺序,可以在
pull(feature)后增加%>% sort()调整排序。 - 若需使用tidyverse风格的迭代语法,可将
lapply替换为purrr::map,效果完全一致。
内容的提问来源于stack exchange,提问作者Eisen
相关产品推荐
相关产品推荐

