R无需下载读取Google Drive多CSV合并为数据帧的map_df报错求助
解决方案
你遇到的报错核心原因是map_df()调用时未传入需要迭代的输入对象,仅定义了处理逻辑,不符合purrr系列函数的参数要求。
修正后完整代码
首先确保你已经完成googledrive包的授权:
library(tidyverse) library(googledrive) # 首次使用会自动唤起浏览器授权,选择有权限读取目标文件夹的谷歌账号即可 drive_auth()
你之前获取CSV列表的代码无需修改:
folder_url <- "https://drive.google.com/folder/directory" #替换为你的文件夹实际链接 folder <- drive_get(as_id(folder_url)) csv_files <- drive_ls(folder, type = "csv")
合并数据的代码调整为以下写法即可:
create.df <- csv_files$id %>% map_df(~ drive_read_csv( file = as_id(.x), col_types = cols(.default = "c") ))
代码说明
map_df()的第一个参数传入需要迭代的CSV文件ID向量csv_files$id,每次循环会将单个ID赋值给.x- 直接调用
googledrive包内置的drive_read_csv()函数,无需手动拼接下载链接,函数会自动将文件内容读取到内存中,仅会在R的临时会话目录生成自动清理的临时文件,不会主动下载到你的用户自定义目录,符合你不落地存储文件的需求 - 该写法会自动同步协作者最新修改的文件内容,每次运行都会拉取谷歌云端的最新版本
可选优化(大文件量场景)
如果需要处理的CSV数量较多,可以添加进度条直观查看处理进度:
create.df <- csv_files$id %>% map_df( .f = ~ drive_read_csv( file = as_id(.x), col_types = cols(.default = "c") ), .progress = "正在合并CSV文件" )
内容的提问来源于stack exchange,提问作者geminis6612
相关产品推荐
相关产品推荐

