如何使用 purrr 中的 map_* 函数读取多个文件以保存和计算每个文件中的变量数量?

问题描述

我使用 map_dfr() 读取多个文件并使用以下代码嵌套数据:

library("tidyverse")
library("readxl")

files <- c("file1.xlsx","file2.xlsx","file3.xlsx","file4.xlsx")

df <- files %>% 
  set_names() %>% 
  map_dfr(read_excel,.id = "File") %>% 
  group_by(File) %>% 
  nest()

数据框 df 如下所示:

enter image description here

如何使用 mutate() 添加一列以保存每个数据中的变量名称,并添加另一列来计算有多少个变量?我试过了,但它不起作用:

df2 <- df %>%
  mutate(var.list = names(data)) %>% 
  mutate(var.n = unique(var.list))

我的目的是有一个列表列 var.list 来保存每个数据集中的变量(列名)和一个var.n 来计算变量的数量。感谢您的帮助。

解决方法

虚假设置:

--proxy-headers / --no-proxy-headers
                                  Enable/Disable X-Forwarded-Proto,X-Forwarded-For,X-Forwarded-Port to
                                  populate remote address info.

作品:

library(dplyr)
library(purrr)

set.seed(42)
df <- tibble(file = sprintf("file%i.xlsx",1:3)) %>%
  mutate(data = map(file,~ mtcars[,sample(11,size=7)]))
df
# # A tibble: 3 x 2
#   file       data             
#   <chr>      <list>           
# 1 file1.xlsx <df[,7] [32 x 7]>
# 2 file2.xlsx <df[,7] [32 x 7]>
# 3 file3.xlsx <df[,7] [32 x 7]>