トップ 履歴 一覧 Farm ソース 検索 ヘルプ RSS ログイン

Google ColabでRを使いDriveにアクセスする


キーワード

最終更新時間:2021年03月15日 22時24分28秒
アフィリエイト・広告について
プライバシーポリシー

事情により、Google ColabでRの教育を提供する可能性が生じました。Rを使うこと自体は、公式にランタイムがサポートされており、簡単です。

パッケージのインストールも、tidyverseなどの大きめなものでも高速に行われ、Notebookを開くたびに行っても、大きな問題はありません。

ただ、Colabの便利な機能であるGoogle Driveのマウントは、Pythonランタイムでのみ可能で、Rではマウントできません。

ファイルを公開状態で共有して、そのURLからダウンロードする、といったこともできますが、もう少し別の方法がないか調べてみました。

結果としては、googledriveパッケージTowards Data Scienceの記事を参考に、Googleドライブにアクセスし、ファイルを取得できました。以下に手順を示します。すべて、Colab上での操作で、すでにRランタイムを使用するNotebookが開いている前提です。

パッケージのインストール

tidyverse, googledrive, R.utilsの各パッケージをインストールします。

install.packages("tidyverse")
install.packages("googledrive")
install.packages("R.utils")

パッケージの読み込み

tidyverse, googledriveパッケージを読み込みます。

library(tidyverse)
library(googledrive)

非対話モードでGoogle Driveを認証する

googledriveパッケージのdrive_auth() 関数は、標準で対話的に認証を行いますが、Colabではダイアログ等が開けないため、非対話的に認証する必要がありました。上記のTowards Data Scienceの記事に、そのまま解決策が書いてあったので、利用します。

suppressMessages(library("R.utils")) # 冗長なメッセージが表示されるので抑制
library("httr")
my_check <- function() {return(TRUE)}
  reassignInPackage("is_interactive", pkgName = "httr", my_check) 
  options(rlang_interactive=TRUE)

drive_auth(use_oob = TRUE, cache = FALSE)

上記のコードを実行すると、Pythonランタイムと同じように、認証用のURLが表示され、アクセス許可が求められます。そして、そこでキーを取得して、セル内の入力ボックスに貼り付けます。


ドライブの確認

Google Driveにアクセスできるか確認します。事前に、Colabからアクセスしたいフォルダーを作成しておいてください。実行結果は、Google Drive上のフォルダーおよびその中のファイルのメタデータ ("dribble" オブジェクトだそうです) として返ってきます。

drive_ls("YOUR FOLDER")

ファイルのダウンロード

Drive上のファイルを、Colabにダウンロードします。データは、セッションストレージにダウンロードされるため、ランタイムが停止すると削除されます。

file <- drive_get("YOUR PATH")
drive_download(file, overwrite = TRUE)

データの読み込み

ダウンロードした後は、普通のファイルですので、read_csv() 関数等で読み込みます。

df <- read_csv("YOUR FILE NAME")
head(df)

Googleスプレッドシートの読み込み

Googleスプレッドシートについては、googlesheets4パッケージread_sheet() 関数で、dribbleオブジェクトから直接データフレームとして読み込めます。

library(googlesheets4)
df <- drive_get("YOUR FILE PATH") %>% read_sheet()

以上です。

コードまとめ



関連ページ: R言語を学ぶための参考書籍リスト
カテゴリ: [R,教育,Goole,データサイエンス,データ分析]