【问题标题】:read multiple CSV files from a Google Drive folder and append then in a single one in R从 Google Drive 文件夹中读取多个 CSV 文件,然后附加到 R 中的单个文件中
【发布时间】:2021-11-16 09:12:45
【问题描述】:

This is how csv_file object created below looks like on the console panel我在谷歌驱动器中有几个 csv 文件,我想在不将这些文件下载到本地计算机的情况下将它们附加为一个数据框。

通常当我从本地计算机调用多个文件时,我使用以下代码,其中 list.files 将所有这些 csv 文件放在一个列表中,然后 map_df 从列表中的所有这些文件中创建一个数据帧。

hourly.files <- list.files(path = "Folder_path_withCSV_files", 
                pattern = "*.csv", 
                full.names = T)%>%
  map_df(~read_csv(., col_types = cols(.default = "c"))) #makes one dataframe

我也想这样做,但在这种情况下,文件更多,并且位于共享的 google 驱动器中。 使用谷歌驱动器:

folder_url <- "https://drive.google.com/folder/directory" #path to the files
folder <- drive_get(as_id(folder_url)) #folder id
csv_files <- drive_ls(folder, type = "csv") #makes a list of with all the csv files

然后,我尝试使用以下代码创建一个数据框: create.df &lt;- map_df(~read_csv(csv_files$id, col_types = cols(.default = "c"))) 但在下面得到这个错误: as_mapper(.f, ...) 中的错误:缺少参数“.f”,没有默认值

正如我所说,我不想在我的本地计算机上下载这些文件,因为它们太多了,我的合作者会不断地修改 google 文件夹中的 csv 文件,所以我想避免每次都下载。 感谢您的帮助。

【问题讨论】:

  • 这有点难以准确说出来(我不知道 csv_files 是什么样的。但是当你运行一个 map 命令时,你首先需要知道要映射的内容。更像是 create .df
  • 嗨,约翰·弗兰查克。谢谢你的建议。我添加了 csv_file 对象的外观图片(带有 ID 的运球)。我试过了,但我得到了这个错误 Error in .x$id : $ operator is invalid for atomic vectors
  • 如果你想读取 csv_files$id 中的文件,我认为你不能使用 read_csv。 read_csv 可以从磁盘或 url 读取,但如果您通过 googledrive api 与 google drive 交互,则需要使用其中一个包函数(可以处理 google drive id)。由于您只使用工作表,您可能需要使用 googlesheets4 包。
  • 谢谢@JohnFrankak。我会研究那个包,看看它是否适合我,因为我并没有真正使用 googlesheet ,这些是存储在共享谷歌驱动器中的 csv 文件。如果可行,我会更新这篇文章。

标签: r google-drive-api tidyverse google-drive-shared-drive


【解决方案1】:

如果你想直接从你的谷歌驱动器中读取文件,你应该先下载Google Drive for desktop,然后去你共享的谷歌驱动器文件夹并将路径复制并粘贴到你的代码中

您使用的此网址适用于您的浏览器(如 Chrome),无法使用。

folder_url <- "https://drive.google.com/folder/directory" #path to the files

通过 google drive for desktop 工具打开共享的 google drive 文件夹,并在您的代码中使用该 url 路径。它会起作用的。

【讨论】:

  • 感谢您的建议。不幸的是,由于此代码将被其他人使用,我被要求使用 googledrive api 而不是 google drive 桌面,因为可能没有多少人能够下载 google drive 桌面。我确实按照您的建议进行了尝试,并且在我下载后它起作用了。我会继续寻找,一旦找到解决方案,我会更新帖子。
【解决方案2】:

我认为您有语法错误。试试 -

library(tidyverse)

create.df <- map_df(csv_files$id, ~read_csv(., col_types = cols(.default = "c")))

【讨论】:

  • 感谢您的建议。我试过了,我得到了这个错误:Error: '1I_-UCSBc7kSO0i0Z_V3_HXzWmPFESpXX' does not exist in current working directory ('C:/Users/XXXYYY/Documents')它正在我的本地目录中寻找文件,但老实说我不明白为什么我仍在与谷歌驱动器交互
猜你喜欢
  • 1970-01-01
  • 2020-09-17
  • 2018-08-02
  • 2021-08-02
  • 1970-01-01
  • 2021-07-04
  • 1970-01-01
  • 1970-01-01
  • 2018-01-27
相关资源
最近更新 更多