R言語、RStudioの使い方

R言語、RStudioの使い方

R言語を勉強するにはRStuidoを起動して、コンソールでR言語に慣れていくのが一番良いかと思います。

> a + b
Error: object 'a' not found
> 'aa' + 'b'
Error in "aa" + "b" : non-numeric argument to binary operator
> 1 + 2
[1] 3

数値や文字列はオブジェクトということになるようです。

文字列(オブジェクト)を扱ってみます。

> val <- 'test'
> val
[1] "test"
>

valというオブジェクトにtestという文字列を代入しました。

コンソールをクリアする

コンソールをクリアしたい場合は、RStudio上で、ctrl + lを押します。これでコンソールがクリアされます。

オブジェクト名 <- オブジェクト

この書き方が基本のようです。sumなど関数も使えるようです。

a <- 10:1
> a
[1] 10 9 8 7 6 5 4 3 2 1
> sum(a)
[1] 55

数値:数値とすると、連続する数値をオブジェクトに代入することができます。配列のようですが、R言語ではベクトルと呼びます。

代入のことをR言語では、付値演算子と呼びます。

オブジェクト名の命名規則

日本語でもいけます。数値から始まるオブジェクト名はできないようです。

大文字と小文字は別オブジェクトとなります。

> a<-1
> A<-2
> a
[1] 1
> A
[1] 2

c()でベクトルを作成する

c()でベクトルを作成することができますが、他言語の配列と唯一違うのは、型が違っても大丈夫という点です。

c(1,"1","T")
[1] "1" "1" "T"

ベクトルには配列と同様に要素にアクセスすることができます。ただし、基底値は1です。

> a<-c(1,"1","T",1)
> a[1]
[1] "1"
> a[2]
[1] "1"
> a[3]
[1] "T"
> a[4]
[1] "1"
> a[5]
[1] NA

1==”1″はTRUE

どうもオブジェクトは数値と文字列は区別しないようです。1==”1″とするとTRUEになります。

> 1 == 1
[1] TRUE
> 1 == "1"
[1] TRUE

組み込み関数のlengthでベクトルの長さを求める

大体の言語は、配列名.lengthだったりしますが、R言語は、以下のようにして求めます。

length(オブジェクト)

以下のような感じです。

> a
[1] "1" "1" "T" "1"
> length(a)
[1] 4

ベクトルの要素が全てTRUEか調べるall、一つでもTRUEがあるかを調べる場合はany

all関数を使うとベクトルの要素が全てTRUEかどうか調べることができます。

> a<-c(TRUE,TRUE)
> all(a)
[1] TRUE
> a<-c(TRUE,FALSE)
> all(a)
[1] FALSE

any関数を使うと一つでもTRUEがあると、TRUEになります。

> a<-c(TRUE,TRUE)
> any(a)
[1] TRUE
> a<-c(TRUE,TRUE,FALSE)
> any(a)
[1] TRUE
> a<-c(FALSE,FALSE)
> any(a)
[1] FALSE

色々組み込み関数があるようですが、全部調べることはできないのでいくつか使ってみます。

unique関数は、ベクトルの重複要素を除く関数です。

> a<-c(1,'1',2,3,4, '4')
> unique(a)
[1] "1" "2" "3" "4"

使い道はわかりませんが、0をn個並べたベクトルを作成する場合はnumeric関数を使います。

> numeric(5)
[1] 0 0 0 0 0

ベクトルの要素を変更する

ベクトルを作成して、要素を変更することができます。要素は読み取り専用ではありません。

以下のようにして代入すれば要素を変更することができます。

> a
[1] "1" "2" "3" "4"
> a[1] <-6
> a
[1] "6" "2" "3" "4"

ベクトルの指定した要素範囲を取り出すには、ベクトルオブジェクト[i:j]というように記述すれば取り出すことができます。

> a
[1] "1" "2" "3" "4"
> a[2:4]
[1] "2" "3" "4"
> a[2:5]
[1] "2" "3" "4" NA

厳密にはオブジェクトには型がある

オブジェクトでもnumericだったりcharacterだったり型が存在します。型を調べるには、mode関数を使います。

> a<-'1'
> a
[1] "1"
> mode(a)
[1] "character"
> a<-1
> a
[1] 1
> mode(a)
[1] "numeric"

日付型はnumericとして扱われるみたいです。

> dt1 <- as.Date("2018-08-20")
> mode(dt1)
[1] "numeric"

ついでに本当にnumericでオブジェクト作成してas.Dateで作成したオブジェクトと等しいか調べてみました。

> dt1 <- as.Date("2018-08-20")
> dt2 <- "2018-08-20"
> dt1 == dt2
[1] TRUE

どうも等しいようです。が、seqで日付オブジェクトを作成するとエラーとなります。

> dt1
[1] "2018-08-20"
> dt2
[1] "2018-08-22"
> seq(dt1,dt2)
Error in seq.Date(dt1, dt2) :
'to' は "Date" オブジェクトでなければなりません

dt2がDateオブジェクトではないということで、エラーになるようです。

dt2をDateオブジェクトにすると、seqを使って連続した日にちを取得することが可能です。

> dt1 <- as.Date("2018-08-20")
> dt2 <- as.Date("2018-08-22")
> seq(dt1,dt2, by="day")
[1] "2018-08-20" "2018-08-21" "2018-08-22"

連続した日にちの場合は、seqの第三引数にby=”day”が必要です。

その他にも以下があります。

項目 内容
by = “days”
by = “week”
by = “month”
by = “quarter” 四半期
by = “year”

さらに by = “2 days”というように数値をつけると2日という意味になります。

length.outをつけると開始日付から、何日とか何週とかを取得することも可能です。

> dt1 <- as.Date("2018-08-20")
> seq(dt1,by="day",length.out=3)
[1] "2018-08-20" "2018-08-21" "2018-08-22"

システム日付

システム日付は、Sys.Date()で取得することができます。

> Sys.Date()
[1] "2018-08-18"
> Sys.Date() -2
[1] "2018-08-16"
> Sys.Date() -19
[1] "2018-07-30"

Sys.time()とすると、「YYYY-MM-DD hh:mm:ss JST」形式で表示されます。

-20とかすると、秒数がマイナスされます。

> Sys.time()
[1] "2018-08-18 11:27:19 JST"
> Sys.time()-20
[1] "2018-08-18 11:27:02 JST"

unclass

unclassというのは、1970年1月1日から経過した日にちを計算してくれます。

> a <- Sys.Date()
> a
[1] "2018-08-18"
> unclass(a)
[1] 17761 # 1970年1月1日から17761日経過していることを意味する

型変換する

ベクトルを型変換することができます。以下はnumericをcharacterに変換している例です。

> a <- c(0,1)
> mode(a)
[1] "numeric"
> mode(a) <- 'character'
> a
[1] "0" "1"

エクセルみたいなデータフレーム

R言語にはデータフレームというのがあって、ベクトルを駆使してエクセルみたいなデータを作成することができます。data.frameを使用します。

> sheet <- data.frame(title=c('英語','数学','国語'),takahashi=c(80,50,60),maruyama=c(0,0,0))
> sheet
title takahashi maruyama
1 英語 80 0
2 数学 50 0
3 国語 60 0

head()関数を使うと、冒頭6行のみ表示できます。指定した行数を表示したい場合はhead()関数の第二引数に行数を指定します。基底は1です。

> head(sheet,1)
title takahashi maruyama
1 英語 80 0

list関数

list関数は複数オブジェクトを纏めた可変長引数の関数です。

> df1 <- 1
> df2 <- 2
> df3 <- 3
> lst <- list(df1,df2,df3)
> lst[1]
[[1]]
[1] 1

> lst[2]
[[1]]
[1] 2

> lst[3]
[[1]]
[1] 3

CSVを読み込む

CSVファイルを読み込むには、read.csv(ファイル名)で読み込みます。CSVファイルには最後に空行が必要です。

a<-read.csv("sample.csv")
> a
本体 番号 部品
1 パソコン本体X 1 キーボード
2 パソコン本体Y 2 マウス
3 パソコン本体Z 3 ディスプレイ

ヘッダがないデータのCSVの場合は、header=FALSEを指定します。その場合、列はV1,V2,V3…と表示されます。

> a<-read.csv("sample.csv",header=FALSE)
> a
V1 V2 V3
1 本体 番号 部品
2 パソコン本体X 1 キーボード
3 パソコン本体Y 2 マウス
4 パソコン本体Z 3 ディスプレイ

CSVの列にアクセスすることができます。ヘッダ名が存在する場合(header=TRUE)は、a$本体、a$番号、といったように$を使ってアクセスすることが可能です。

ヘッダが存在しない場合は、V1と$を使ってアクセスします。

> a<-read.csv("sample.csv",header=FALSE)
> a
V1 V2 V3
1 本体 番号 部品
2 パソコン本体X 1 キーボード
3 パソコン本体Y 2 マウス
4 パソコン本体Z 3 ディスプレイ
> a$V3
[1] 部品 キーボード マウス ディスプレイ
Levels: キーボード ディスプレイ マウス 部品

input string 1 is invalid in this locale

「input string 1 is invalid in this locale」と表示されたらUTF-8設定ができていません。

デフォルト文字コードを変更するには、option関数を使用します。

options(encoding = "utf-8")

これで文字コードがUTF-8になります。ただし、RStudioを再起動するとこの設定は消えますので、R言語を起動するときのフォルダー直下に.Rprofileファイルを作成し、その先頭1行目に蒸気を記述します。

RStudioのホームディレクトリ

RStudioにはホームディレクトリというのがあって、getwd()コマンドで調べることができます。

> getwd()
[1] "C:/Users/takahashi/Documents"

ホームディレクトリを変更するには、setwd()コマンドの引数にパスを指定すればよいです。相対パスでも大丈夫です。

> setwd("~/R")
> setwd('../')
> getwd()
[1] "C:/Users/takahashi/Documents"

もしくは、Filesの「More」ー「Set As Working Directory」で変更することも可能です。

.Rprofile

options(encoding = "utf-8")

これでRStudio再起動時にホームディレクトリ直下の.Rprofileが読み込まれるので、デフォルトでUTF-8となります。

CSVファイルを作成する

CSVファイルを作成するには、write.csvを使用します。1列目の行番号を非表示にしたい場合は、row.names=FALSEにします。ダブルクォーテーションで囲みたくない場合は、quote=FALSEにします。

> write.csv(a,"./a.csv",row.names=FALSE,quote=FALSE)
> a
V1 V2 V3
1 本体 番号 部品
2 パソコン本体X 1 キーボード
3 パソコン本体Y 2 マウス
4 パソコン本体Z 3 ディスプレイ

a.csvを「View File」するとa.csvが表示されます。

RStudioの使い方

Rのパッケージ管理

Rではパッケージ管理ができます。インストールするには

install.packages("パッケージ名",dependencies = TRUE)

とするとCRANで公開されているパッケージをインストールすることができます。

パッケージをアンインストールするには

remove.packages("パッケージ名")

とするとアンインストールすることができます。

packageVersion関数

インストールされているパッケージのバージョンを調べる関数です。

> packageVersion("rmarkdown")
[1] ‘1.10’

library関数

パッケージ名の一覧はlibrary関数で調べることができます。

> library()

R Markdownの作成方法

RStudioを使ってR Markdownを作成することができます。

Markdownは.mdファイルですが、R Markdownは.Rmdファイルになります。

RStudioの左上の「+」ボタンを押し、「R Markdown」をクリックします。

R言語、RStudioの使い方

以下が表示されたら「Yes」をクリックしてください。

R言語、RStudioの使い方

TitleとAuthorを入力し、PDF、HTML、WORDのどれかを選択します。ここではPDFを選択しています。

R言語、RStudioの使い方

「OK」を押すとファイルが作成されます。

R言語、RStudioの使い方

「Knit」というボタンがあるので、ここでは「Knit to PDF」を選択します。Knitは、接合とか結合という意味のようです。

R言語、RStudioの使い方

すると、以下のエラー(一部)が出ました。

エラー: Failed to compile a.tex.
追加情報: 警告メッセージ:
system2(..., stdout = FALSE, stderr = FALSE) で: '"pdflatex"' not found
実行が停止されました

Windowsの場合は、MiKTeXというのをセットアップする必要があるようです。

Windows: MiKTeX (Complete) - http://miktex.org/2.9/setup
Getting MiKTeX

Downloadします。

R言語、RStudioの使い方

ダウンロードした「setup-2.9.6637-x64.exe」を実行します。

「次へ」をクリックします。

R言語、RStudioの使い方

「Download MiKTeX」を選択して「次へ」をクリックします。

R言語、RStudioの使い方

「Complete MiKTeX」を選択して「次へ」をクリックします。

R言語、RStudioの使い方

「Japan」を選択して「次へ」をクリックします。

R言語、RStudioの使い方

ダウンロード先を選択して「次へ」をクリックします。

R言語、RStudioの使い方

「Start」をクリックします。これでダウンロードが開始されます。ダウンロードに30分くらいはかかります。

R言語、RStudioの使い方

「次へ」をクリックします。

R言語、RStudioの使い方

「Close」をクリックします。

R言語、RStudioの使い方

これで、デスクトップに「MiKTeX Download Files」フォルダが作成されいてると思います。

再度、setup-2.9.6637-x64.exeを実行します。「次へ」をクリックします。

R言語、RStudioの使い方

「次へ」をクリックします。

R言語、RStudioの使い方

「次へ」をクリックします。

R言語、RStudioの使い方

「次へ」をクリックします。

R言語、RStudioの使い方

「次へ」をクリックします。

R言語、RStudioの使い方

「次へ」をクリックします。

R言語、RStudioの使い方

「Start」をクリックします。

R言語、RStudioの使い方

「次へ」をクリックします。

R言語、RStudioの使い方

「Close」をクリックします。

R言語、RStudioの使い方

これでPDFが出力できるかと思い、「Knit to PDF」を再度してみます。

R言語、RStudioの使い方

無事、PDFファイルが出力されました。

Rチャンク

Markdownとの違いは、Rチャンクというが記述できるという点です。

RチャンクでRのコードが記述できるようになります。

geosphereパッケージをインストールして世界地図を表示する

install.packages("geosphere",dependencies = TRUE)

でgeosphereをインストールします。依存関係にあるパッケージもインストールします。

> library("geosphere")
> plot(wrld, type = "l")

これで、Plotsに世界地図が表示されます。

R言語、RStudioの使い方

RStuidoを終了する

RStuidoをコマンドで終了するには

> q()

で終了することができます。

用語

NAは、欠損値 (Not Available) の略です。

R言語をインストール、RStudioをインストールする」も合わせてお読み下さい。

項目 バージョン
R 3.5.1
RStudio 1.1.456

コメント

タイトルとURLをコピーしました