如何使用 R 和 google 驱动器包将多个文件从 google 驱动器下载并保存到笔记本电脑上的特定文件夹

How do I download and save multiple files from google drive to a particular folder on my laptop using R and googledrive package

我正在按照 this post 中的说明将 2 个 csv 文件从我的 google 驱动器下载到我的计算机。这是提供的代码-

library(googledrive)
library(purrr)

## store the URL you have
folder_url <- "https://drive.google.com/drive/folders/0B7tJg2i5HAo2c0VzVFVhLUdQcnM"

## identify this folder on Drive
## let googledrive know this is a file ID or URL, as opposed to file name
folder <- drive_get(as_id(folder_url))

## identify the csv files in that folder
csv_files <- drive_ls(folder, type = "csv")

## download them
walk(csv_files$id, ~ drive_download(as_id(.x)))

以上说明将 csv 文件下载到我的“文档”文件夹中。我正在尝试使用对最后一点代码的轻微修改将文件下载到笔记本电脑上的特定文件夹

walk(csv_files$id, ~ drive_download(as_id(.x),
                                    path = "../Desktop/data_folder/,
                                    overwrite = TRUE))

很遗憾,这是在保存单个 .xlsx 文件,该文件不包含任何数据且无法打开。如何更正代码以将两个文件保存到特定文件夹?

问题是 path 参数需要完整的文件名,而不仅仅是目录路径。所以默认情况下,它使用 goodledrive 方法计算出文件名,并使用它在您的计算机上的当前工作目录中创建一个文件。但是如果您不想要这种默认行为,您还应该提供文件名。所以基本上有两个选择:

  1. 在 运行 您提供的代码之前,将您的工作目录设置为您希望将文件下载到的文件夹。 (然后很可能将其改回是个好主意)

  2. 重写脚本,以便使用 googledrive 文件名构建 path 参数。像这样:

path <- "~/Documents/tmp/data_folder/"
for (i in seq_along(csv_files$name)) {
  drive_download(
    as_id(csv_files$id[[i]]),
    path = file.path(path, csv_files$name[[i]]),
    overwrite = TRUE
  )
}

或者如果您更喜欢使用 walk

csv_files %>% 
  split(csv_files$id) %>% 
  walk(~drive_download(.$id, path = file.path(path, .$name), overwrite = TRUE))