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

R语言使用dplyr提取Microsoft365R返回嵌套数据框的指定字段

问题解决方法

根因说明

你遇到报错的核心原因是:SKA_student中的lastModifiedBy属于嵌套数据框列,控制台打印时显示的lastModifiedBy.user.email是为了方便阅读自动拼接的展示名称,并不是数据框中实际存在的列名,因此直接传入select()会触发列不存在的错误。

基于tidyverse(dplyr生态)的解决方案

方案1:使用tidyr::hoist直接提取指定嵌套字段(推荐)

hoist是tidyverse专门用于提取嵌套列中指定字段的函数,语法清晰,支持直接指定嵌套层级提取目标字段:

library(dplyr)
library(tidyr)

# 单独提取邮箱字段,生成新列名为email
SKA_student %>% 
  hoist(lastModifiedBy, 
        email = c("user", "email"))

如果需要把lastModifiedBy下的所有子字段全部展平为普通列,可以使用unnest_wider:

# 两层嵌套全部展平,之后可以直接用select提取任意子字段
SKA_student %>% 
  unnest_wider(lastModifiedBy) %>% 
  unnest_wider(user)

方案2:仅使用dplyr实现提取

如果不想额外加载tidyr包,仅用dplyr的语法也可以实现需求:

SKA_student %>% 
  mutate(lastModifiedBy.user.email = .$lastModifiedBy$user$email) %>% 
  select(lastModifiedBy.user.email)

方案3:仅需获取字段值不需要保留数据框结构

如果只需要拿到邮箱的取值,不需要保留在数据框中,可以直接嵌套pull:

SKA_student %>% 
  pull(lastModifiedBy) %>% 
  pull(user) %>% 
  pull(email)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 10:45:03