如何在Colab中使用R从Google Drive读取数据?

时间:2020-01-15 06:20:39

标签: r google-colaboratory

我必须在colab中使用R从Google驱动器读取csv格式的数据。我知道如何使用python进行此操作,但是我没有在R中获得相关的方法来实现它。

6 个答案:

答案 0 :(得分:1)

如果您可以公开数据,则可以使用gdown

system("gdown --id 12uRyLU-aAdInBtkVubhI4l3PmbYIo5aE")
data = read.csv("country_culture.csv")

这里是example notebook

答案 1 :(得分:1)

我在 Colab 中使用 R 运行时,最初在将我的文件放入运行时时遇到了一些挑战,这是由 googledrive 包的依赖项引起的。我发现加载文件的最简单方法是编写一个小的辅助函数,并在创建链接时使我的文件在 google 上不受限制地可用(注意此示例使用外部包中的 read.spss 函数将数据实际加载到数据帧中) :

load_google_drive_data <- function(google_file_url){
    g_link = google_file_url 
    file_id = substr(g_link, regexpr("/d/", g_link) + 3 ,  regexpr("/view", g_link) -1 )
    url =  paste("https://drive.google.com/uc?export=download&id=", file_id, sep="")
    download.file(url, "file.sav")
    df <- read.spss("file.sav", use.value.label=TRUE, to.data.frame=TRUE)
    return(df)
}

你这样称呼它(插入你自己的链接):

load_google_drive_data("https://drive.google.com/file/d/<fileid>/view?usp=sharing")

答案 2 :(得分:0)

您可以使用两个R包来完成此操作,具体取决于您想如何将Google驱动器推向世界。

我在工作中使用此工具从同事希望我分析的共享文件中获取数据。最基本的使用方式

require(googlesheets4)
require(googledrive)
gs_file<- drive_get('name_of_sheet_on_google')
gs_data <- read_sheet(gs_file)

执行此操作时,您将需要登录google帐户,并且在运行代码时会出现身份验证请求,您将同意允许访问,并且数据将神奇地显示在数据框中。

我永远不会在无人看管的情况下运行代码,因此为了安全起见,我不会存储用户名和密码,但是这两个软件包都具有这些功能,并且如果您阅读了PDF并在CRAN上对这两个小插图进行了介绍,那么您应该能够安全的东西。

无论您是在在线Jupyter环境中工作,R还是R,这都是无关紧要的。这两个软件包和该代码(具有适当的访问权限,应该使您朝正确的方向前进!

答案 3 :(得分:0)

我发现完成这项工作的方法是将R代码作为Python笔记本的一部分运行。这有点麻烦,但是我首先尝试在RStudio中编写和测试我的代码,然后将其移植到Colab以便与我的团队共享。这是这样做的方法。

  1. 首先,您需要在Python中加载一个colab笔记本,这并不难,因为它是默认设置。但是无论如何,您都可以在运行时>>更改运行时类型中完成它。

  2. 现在,您需要使用块将R导入工作空间:

agents <- levels(ts_agents$agent)
results <- matrix(NA, length(agents))

for(i in 1:length(agents)){
  ts_agents %>% 
    time_decompose(new_scheds)[i] %>%
    anomalize(remainder)[i] %>%
    time_recompose()[i] %>%
    plot_anomalies(time_recomposed = TRUE, ncol = 3, alpha_dots = 0.5)[i] }
  1. 然后,您需要通过Python代码安装Google驱动器。该摘录来自Google Colab's tutorial。请注意,有必要完成身份验证过程,通过该过程,您单击代码中生成的链接,然后导航到您的云端硬盘帐户,然后将密码复制回交互式框中。
%reload_ext rpy2.ipython
  1. 您应该已经准备好开始使用R代码,可以使用from google.colab import drive drive.mount('/content/malaria-drive') 进行内联响应,或者使用%R进行R中的整个单元格运行(我的偏爱)。这是我正在处理的代码的一个片段。
%%R
  1. 完成驱动器后,上述教程建议您刷新并卸下驱动器(使用Python完成,因此不要使用%%R # Pkgs/opts ---- t_ini <- Sys.time() install.packages("devtools") devtools::install_github("lucasmation/microdadosBrasil") xfun::pkg_attach2( "microdadosBrasil", "data.table", "questionr", "forcats", "stringr", "readr") options(datatable.print.topn = 50, scipen = 999) )。
%%R

是的,必须在每个代码块中键入drive.flush_and_unmount() 有点烦人,但这是我到目前为止找到的解决方案。希望Colab将来可以在R中提供直接方法。

答案 4 :(得分:0)

我在 Python Google colab 中这样做,使用 rpy2 在 Python 中使用 R。 它有效,但不幸的是,您必须在每个单元格的开头使用 %%R 才能使用 R。

from google.colab import drive
drive.mount('/content/drive')
%load_ext rpy2.ipython
# <%%R> has to be used in each cell with R-Code, with <%R> R-Code can be mixed with Python
%%R
load("file.RData")

答案 5 :(得分:-2)

我只是将我的 .sav 文件添加到会话内存中(单击左侧的文件夹图标,然后单击“发送到会话内存”按钮)。然后确保已发送并通过代码显示我的文件的确切名称: 系统(“ls”,真)。 然后从“haven”库使用函数“read_sav”(作为参数,您只需粘贴文件名)。就是这样。