You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用正则筛选R数据框列名并按问题编号分组为嵌套列表?

解决方案

直接在原有管道后追加字符串提取与分组拆分的操作即可,无需额外转换数据结构,代码如下:

library(dplyr)
library(stringr)

result <- df %>% 
  select(matches('Q[0-9]{2,3}/')) %>% 
  names() %>% 
  split(str_extract(., 'Q\\d{2,3}'))

代码解释

  1. 前两步和你原有逻辑一致:筛选出符合正则规则的列,再提取这些列的名称
  2. str_extract(., 'Q\\d{2,3}'):从每个列名里提取出问题编号(比如从Q10/male里提取Q10),正则Q\\d{2,3}匹配"Q"开头后跟2-3位数字的片段
  3. split():把列名字符串向量按提取出的问题编号分组,自动生成以问题编号为名称的嵌套列表,每个子列表对应同一问题的所有列名

运行后得到的result结构如下:

$Q10
[1] "Q10/male"   "Q10/female"

$Q203
[1] "Q203/option_a" "Q203/option_b" "Q203/option_c"

内容的提问来源于stack exchange,提问作者johnjohn

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.24 20:52:07