RStudio ガイド

RStudio ガイド

R とは何か?

Python と同様に、R はデータのクリーニングと分析に使用されるオープンソースの統計ソフトウェアです。データサイエンスコミュニティで広く使われており、統計学者やデータサイエンティストにとって統計モデリングを容易にする多くのパッケージがあります。R を学ぶ価値がある理由については、このブログ記事が素晴らしい説明を提供しており、読む価値があります。

R をダウンロードするには、CRAN(Comprehensive R Archive Network)のウェブサイトに移動し、システム用の R バージョンをダウンロードしてください。

R-4.2.2.pkg に似たファイルをダウンロードしてください。R をマシンにダウンロードしたら、プロンプトに従って(デフォルトを受け入れるのが最善)ソフトウェアをインストールしてください。

RStudio とは何か?

RStudio は R の統合開発環境(IDE)で、オープンソース版と商用版の両方で利用可能です。RStudio はPositによって開発されています。Posit はデータサイエンス、科学研究、テクニカルコミュニケーション向けのオープンソースソフトウェアを作成する会社です。多くの R リソースとパッケージ開発にも責任を持っています。詳細については Posit ウェブサイトのリソースページをご覧ください。以下は RStudio からのいくつかの役立つリソースです。

RStudio をダウンロードする前に、まず R をダウンロードする必要があります。マシンに R をダウンロードしていないと RStudio は動作しません

RStudio をダウンロードするには、Posit ウェブサイトに移動し、Products > RStudio IDE > (クリック)Download RStudio > Download RStudio Desktop を通じてナビゲートしてください。

またはこちらに移動してウェブサイトの手順に従ってください。

注意 このページ全体で R と RStudio は同義に使用される場合があります。

Snowflake ドライバーのダウンロードと設定(MacOS)

RStudio はモデルの本番開発やアドホック分析のためにさまざまなデータベースに接続できます。Snowflake に接続したい場合は、以下の手順を実行してください。

  1. まず、homebrew を使用して unixODBC をインストールする必要があります。まだマシンに homebrew をインストールしていない場合は、ウェブサイトにインストールコマンドが記載されています。homebrew がインストールされたら、unixODBC を以下のコマンドでインストールできます: brew install unixodbc

    • 代替として iODBC を使用できますが、このドキュメントでは選択したドライバーマネージャーとして unixODBC を使用しています。
  2. これにより、2つの設定ファイル odbcinst.iniodbc.ini が作成されます。

    • odbcinst.ini は ODBC ドライバーの情報を保持します。
    • odbc.ini はホスト、ユーザー名などのデータベースへの接続に必要な情報を保持します。ここでシステムの DSN を設定します。
    • これらの設定ファイルの場所を確認するには、コマンド odbcinst -j を実行してください。
  3. Snowflake の最新ドライバーをこちらからダウンロードしてください。その後、これらの指示に従ってマシン上でドライバーの設定を完了してください。

    • 設定ファイルには、ロール、データベース、ウェアハウス、ユーザー名など、任意のパラメーターを入力できます。ただし、RStudio でも指定できます。設定ファイルにこれらの詳細を設定する場合は、Snowflake で使用するデータベース/スキーマごとに DSN を設定する必要があるかもしれません。
    • 以下は、ユーザーファイルの場所にある odbc.iniodbcinst.ini ファイルの設定例です。

odbcinst.ini(上記の odbcinst -j コマンドの出力に基づくファイルの場所)

[Snowflake]
Driver      = /opt/snowflake/snowflakeodbc/lib/universal/libSnowflake.dylib

odbc.ini(上記の odbcinst -j コマンドの出力に基づくファイルの場所)

[ODBC Data Sources]
SnowflakeDSII = Snowflake

[SnowflakeDSII]
Server = gitlab.snowflakecomputing.com
Port =
UID =
Schema =
Warehouse =
Driver = /opt/snowflake/snowflakeodbc/lib/universal/libSnowflake.dylib
Description = Snowflake DSII
Locale = en-US
Tracing = 0
Authenticator = gitlab.okta.com

このビデオは、ODBC 経由で Snowflake にツール(Excel を使用)を接続する基本的な手順を示しています。

RStudio で Snowflake に接続する

次のステップは、設定したドライバー設定を使用して RStudio を Snowflake に接続することです。これは、R の DBItidyverseodbc パッケージを使用することで実現できます。RStudio でデータベースに接続する方法の概要については、このウェブサイトを参照してください。

以下は、R で Snowflake に接続するためのコード例です。

con <- DBI::dbConnect(odbc::odbc(),
  driver = "Snowflake",
  uid = rstudioapi::askForPassword("Database UserID"),
  role = [your user role],
  warehouse = [warehouse you wish to connect to],
  pwd = rstudioapi::askForPassword("Database password"),
  Authenticator = "externalbrowser",
  database = [database you wish to connect to],
  schema = [schema you wish to connect to],
  server = "gitlab.snowflakecomputing.com"
)

上記のコードに関する詳細:

  1. DBI は R をさまざまなデータベースに接続するのに役立つパッケージです。上記では、dbConnect() 関数を使用してデータベースパラメーターを渡しています。
  2. odbc::odbc() は、この接続に ODBC ドライバーを使用することを関数に伝えます。
  3. rstudioapi::askForPassword("") 関数は、UID や PWD がスクリプトに保存されないようにユーザーに入力を求めます。
  4. driver = "Snowflake" は、上記で設定した odbcinst.ini ファイルに固有です。これは使用するドライバーを指定します。(注意:接続に問題がある場合は、R でドライバーの実際のパスに構文を変更してみてください。例: driver = "/opt/snowflake/snowflakeodbc/lib/universal/libSnowflake.dylib"
  5. server = "gitlab.snowflakecomputing.com はアクセスする Snowflake インスタンスに固有です。

Okta 認証

Okta などの認証は Snowflake への接続によく使用されるため、上記の指示で**Authenticator**を何度か参照しています。最初は odbc.ini ファイルで、GitLab で使用される認証(Okta)を指定しています。次に DBI::dbConnect() で使用されるパラメーターで Authenticator = "externalbrowser" という行で参照されます。

"externalbrowser" は、Snowflake にログインするために設定ファイルで指定された URL を参照するよう dbConnect() に伝えます。rstudioapi::askForPassword() プロンプト中に入力するパスワードは、ユーザーの Okta パスワードである必要があります。

上記の手順を完了してコードを実行しようとすると、ログインを完了するためのウェブページに移動します。R のコンソールには、ウェブページに移動する前に以下のテキストが表示されます。

Initiating login request with your identity provider. A browser window should have opened for you to complete the login. If you can't see it, check existing browser windows, or your OS settings. Press CTRL+C to abort and try again...

注意: ID が確認されて Snowflake に接続されたことが示されるまで、ウェブページに留まる必要があります。

.Rprofile で R を管理する

RStudio での特定のセッションのスタートアッププロセスをカスタマイズするために .Rprofile ファイルを設定することをお勧めします。他のユーザーとのコードの共有も簡略化できます。起動時に R と RStudio は .Rprofile ファイルを探して実行し、R セッションの動作(オプションや環境変数の設定など)を制御するために使用できます。

.Rprofile ファイルはユーザーレベルまたはプロジェクトレベルのいずれかにすることができます。ユーザーレベルの .Rprofile ファイルはユーザーのホームディレクトリのベースにあり、プロジェクトレベルの .Rprofile ファイルはプロジェクトディレクトリのベースにあります。R は 1 つの .Rprofile ファイルのみをソースします。そのため、プロジェクト固有の .Rprofile ファイルと使用したいユーザーの .Rprofile ファイルの両方がある場合は、プロジェクトレベルの .Rprofile の先頭で source("~/.Rprofile") を使用してユーザーレベルの .Rprofile を明示的にソースしてください。

.Rprofile ファイルを編集する簡単な方法の1つは、R セッション内から usethis::edit_r_profile() 関数を使用することです。ユーザーレベルまたはプロジェクトレベルの .Rprofile のどちらを編集するかを指定できます。

以下の例に従って、Snowflake のユーザー名、ロール、ドライバーを自動的に設定する新しい .Rprofile ファイルを設定してください。他のユーザーが同じテンプレートに従えば、あなたの R コードを使用して Snowflake(または他のデータベース)テーブルにアクセスする際にこの情報を更新する必要がなくなります:

  • まず、パッケージをインストールして usethis パッケージの edit_r_profile() 関数を実行して空の .Rprofile ドキュメントを作成します
install.packages("usethis")
library(usethis)
usethis::edit_r_profile()
  • 別のタブで開く .Rprofile ファイルに必要な情報を入力します:
.First <- function() cat("Welcome to R!")
.Last <- function()  cat("Goodbye!")

uid = "[email protected]"
role = "CSMITH"
driver = "/opt/snowflake/snowflakeodbc/lib/universal/libSnowflake.dylib"
styler::tidyverse_style()

message("*** Successfully loaded .Rprofile ***")
  • .Rprofile ファイルを保存してください。動作確認のために、R の画面上部で Session » Restart R に移動してください
  • R が再起動すると、コンソールにメッセージが表示されます。上記の例では *** Successfully loaded .Rprofile *** Welcome to R! と表示されます
  • 環境に uidroledriver 変数も表示されます。これらの変数は、データベース(GitLab では Snowflake)への接続や、必要と判断した他の変数に使用されます。

dbplyr

dbplyr パッケージは tidyverse 言語を使用してデータベースと対話するために使用できます。すでに tidyverse に慣れている場合は、このパッケージが特に役立つでしょう。

RStudio で Git を使用する方法

このドキュメントは RStudio バージョン 2022.07.1 を使用して作成されました。

目標

  1. Git のセットアップとインストール
  2. RStudio で Git をセットアップ
  3. GitLab から既存のプロジェクトをクローン
  4. トラブルシューティング

パート 1: インストールとセットアップ

  • R をダウンロードしてインストールする(まだインストールしていない場合)。
  • RStudio Desktop をダウンロードしてインストールする(まだインストールしていない場合)。
  • Homebrew をインストールする(まだインストールしていない場合)。
  • Git をインストールする
    • Homebrew がインストールされたら、ターミナルを開く(Mac では Command+Space Bar で検索バーを開き、「Terminal」を検索)
    • ターミナルでコマンド brew install git を実行する
    • 代替として、Git はこちらからダウンロードできます。この方法を使用する場合は、インストール先のパスをメモしておいてください。
  • クローンしたいプロジェクトへの GitLab アカウントとアクセスも必要です

パート 2: RStudio で Git をセットアップする

  • RStudio を開き、Tools > Global Options > Git/SVN に移動する
  • Enable version control interface for RStudio project(RStudio プロジェクトのバージョン管理インターフェースを有効にする)のチェックボックスをオンにする
  • インストールした Git 実行ファイルへのパスを設定する。
    • Git がどこにインストールされているかわからない場合は、ターミナルを開いてコマンド which git を入力して return キーを押す
    • パスは /usr/bin/git のようなものになるはずです。(注意:Finder でナビゲートする場合、Command + Shift + . を押すと隠しファイルを表示できます)
  • SSH キーペアの生成セクションの指示に従って SSH キーを作成する。
    • ED25519 を推奨
    • 完了したら、SSH RSA Key フィールドにプライベートキーのパスを追加する
    • Git-SVN
  • RStudio で GitLab ユーザー名GitLab メール を設定して Git を構成する
    • Git プロンプトを開くには Tools > Shell に移動し、以下を入力する:
      • git config --global user.name 'yourGitHubUsername'
      • git config --global user.email '[email protected]'
  • RStudio を再起動する

パート 3: Git を使用した RStudio プロジェクトを作成する

  • リモートの Git リポジトリを元に新しいプロジェクトを作成するには:
    • File > New Project > Version Control を選択する
    • Git-Project
    • Git を選択し、リポジトリ URL を入力する:
      • Git-Repo
      • クローンしたい GitLab プロジェクトにアクセスする
      • 右上の Clone ドロップダウンボタンを選択する
      • Clone with HTTPS の URL をコピーする
      • Git-Clone
      • このリンクを RStudio の Repository URL セクションに貼り付ける
      • Create New Project を選択する
  • GitLab プロジェクトが R Studio に表示されるはずです
  • ウォークスルー手順のソース

パート 4: トラブルシューティング

  • エラー:

    Cloning into 'repo-name'
    gitlab.com: Permission denied (publickey).
    fatal: Could not read from remote repository.
    
    Please make sure you have the correct access rights and repository exists.
    
    • 解決策: これは特定バージョンの RStudio での既知の問題で、解決に向けて取り組んでいます。古いバージョンを再インストールすると解決する場合があります(ソース)。

R Studio からの更新で GitLab プロジェクトを更新する方法

  • ローカルで行った変更を GitLab プロジェクトにアップロードする前に、R の Git セクションから Pull with Rebase を選択して最新のブランチで作業していることを確認してください(main ブランチからリベースしていることを確認してください)
    • Pull
  • 変更が完了してアップロードの準備ができたら、新しいブランチアイコンを選択してブランチに名前を付けてください(スペースは使用できません)。Create を選択してください
    • Push
  • R で開く Review Changes ウィンドウで、画面左側の変更が Staged にチェックされており、画面右側にコミットメッセージが入力されていることを確認してください。
  • Commit を選択する
  • GitLab で、更新を行ったプロジェクトに移動してください。作成が必要なマージリクエストが表示され、R で行った変更が含まれているはずです。関連するレビュアーと承認者を選択して変更をマージしてください。

RStudio と Google スプレッドシートを接続する方法

Google スプレッドシートと R は、R の googlesheets4googledrive パッケージを通じて対話できます。

  1. Google App 認証のセットアップ
  2. パッケージのインストール
  3. 既存の Google スプレッドシートの読み取り
  4. Google スプレッドシートへの書き込み

パート 1: Google App 認証のセットアップ

  1. ハンドブックの手順に従って、Google Cloud プロジェクトに自分自身を追加してください。
  2. 自分専用のアクセスを設定するために、これのような Issue を提出してください
  3. アクセスが設定されたら、以下のコードを使用して RStudio でのアクセスの設定と構成を進めることができます。
library(googlesheets4)
library(googledrive)
## googlesheets4 Test
google_app <- httr::oauth_app(
    "R",
    key = "[KEY].apps.googleusercontent.com",
    secret = "[SECRET]"
)

google_key <- "[GOOGLE_KEY]"

# googlesheets4::gs4_auth_configure(app = google_app,
#                                   api_key = google_key)

googlesheets4::gs4_auth_configure(client = gargle::gargle_oauth_client_from_json("~/Google Drive/Shared drives/People Analytics/Google API in R/googlesheets_api_sm.json"),
                                  api_key = google_key)

googlesheets4::gs4_auth()

## Test Read
googlesheets4::read_sheet(ss = "https://docs.google.com/spreadsheets/d/1Oe7AduRIKO7Zqh60v51Zn-WnTJYpcMDho_394urBmpA",
                          sheet = "stop_words") |>
    View()


## googledrive Test

googledrive::drive_auth()

googledrive::drive_mv(file = "[SHEET_NAME]",
         path = as_id("[PATH]"),
         overwrite = TRUE)

パート 2: インストール

  • R で以下のコードを実行して、RStudio に必要なパッケージをインストールします
pkg <- c("googlesheets4", "googledrive")
invisible(lapply(pkg, function(x) if (x %in% rownames(installed.packages())==F) install.packages(x)))
invisible(lapply(pkg, library, character.only = TRUE))
rm(pkg)

パート 3: 既存の Google スプレッドシートを読み取る

  • read_sheet() 関数を使用すると、既存のスプレッドシートを読み取ることができます
    • 表示したいスプレッドシートの URL を指定して R で read_sheet() コマンドを実行してください
    • URL の例: googlesheets4::read_sheet("https://docs.google.com/spreadsheets/...")
  • スプレッドシートへのアクセスを初めて試みると、アカウント情報の入力を求められます
    • 「R セッション間でフォルダーに OAuth アクセス認証情報をキャッシュしても大丈夫ですか」と尋ねられた場合は RStudio で Yes と入力してください
    • ブラウザで Google アカウントにログインするよう求められます
    • Tidyverse API パッケージが Google スプレッドシートのスプレッドシートにアクセスできるようにするチェックボックスをオンにしてください
    • 認証が完了したことを示す新しいウィンドウが開きます。ブラウザウィンドウを閉じてください。
    • read_sheet() コマンドを再度実行して、R で出力が表示できることを確認してください

パート 4: Google スプレッドシートに書き込む

以下は、Google スプレッドシートにデータを書き込むために使用できる関数のリストと例です。

  • gs4_create() は新しいスプレッドシートを作成し、オプションで初期データを入力できます

    • 例:

      (ss <- gs4_create("fluffy-bunny", sheets = list(flowers = head(iris))))
      
  • sheet_write() は Google スプレッドシートのタブにデータフレーム全体を(上書き)書き込みます。

    • 例:

      head(mtcars) %>%
      sheet_write(ss, sheet = "autos")
      
  • range_write() は Google スプレッドシートの同じセル範囲にデータフレームを書き込み/上書きします。ターゲットシートはすでに存在している必要があります。

    • 例:

      df <- dataframe
      ss <- "https://docs.google.com/spreadsheets/..."
      googlesheets4::range_write(ss = ss,
      data = df,
      sheet = "tabname")
      
  • range_clear() は既存のスプレッドシートタブからデータをクリアするために使用できます

    • 例:

      df <- dataframe
      ss <- "https://docs.google.com/spreadsheets/..."
      googlesheets4::range_clear(ss = ss,
      sheet = "tabname"
      range = "tabname!A2:ZZ1000000")
      
  • sheet_append() は既存のタブに行を追加するために使用できます。注意:この関数はターゲットシートの行として列ヘッダーを除外します。

    • 例:

      df <- dataframe
      ss <- "https://docs.google.com/spreadsheets/..."
      googlesheets4:sheet_append(
      ss = ss,
      data = df,
      sheet = "tabname")
      
  • このトピックの詳細についてはソースを参照してください。