Rの使い方メモ

# 概要
統計ソフトRをインストールして、遊んでみました。
個人的なメモです。

流れとしては

1. 基本的な文法・使い方
1. 可視化の手法を知る
1. 解析手法ごとにパッケージと使い方を知る

# 遊んだ感想
かなりPythonに近いです。

# インストール

https://qiita.com/hujuu/items/ddd66ae8e6f3f989f2c0

# 基本

```R
die <- 1:6
# 配列　die = 1 2 3 4 5 6

die[2]
# 2 、配列は0からではなく1から

die[0]
# 外側参照：integer(0)

die[7]
# 外側参照：NA

die*die
#  1  4  9 16 25 36 : 要素同士積

die + 1
# 2 3 4 5 6 7 :各要素に作用

a <- 1
#変数の宣言と代入

3**4
#累乗：81

1/0
#inf 

x<-c(1,2,2,2,3,3)
# 配列　生成

length(x)
# 配列の長さ

typeof(x)
# データ型
```

# 関数

```R
> round(3.4)
[1] 3
> round(3.5)
[1] 4
> factorial(3)
[1] 6

# ランダムサンプル
> sample(die,1)
[1] 6
> sample(die,1)
[1] 4
> sample(die,1)
[1] 6
> sample(die,1)
[1] 1
> sample(die,1)
[1] 1
> sample(die,1)
[1] 3
> sample(die,1)
[1] 1
> sample(die,1)
[1] 6

# 関数定義検索
> args(sample)
function (x, size, replace = FALSE, prob = NULL) 
NULL
# replaceは取り出した値を元に戻すかどうか
```
`Shift+Enter`でコマンドライン内改行

関数定義

```R
func <- function(a){
    2
    a+2
    5
}

func(1)
#5

```
最後の行の実行結果を返す。

# R_script
Fileリボンから新規でR scriptを作れます。

`Ctrl + Enter` 現在カーソルのある場所を実行します（Runボタン）。
`Ctrl + Alt + R`で全部実行できます(Sourceボタン)。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/405484/7c9bb245-b372-2fe0-2ad3-c09d82adf77d.png)

もちろん設定は変更可能
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/405484/5b6045fe-6c33-0770-c2d1-e0650a9a3faa.png)
私はF5,F6に割当を変更しました。

# パッケージ
コンソールラインで

```R
install.packages("ggplot2")
```

でグラフ描画ライブラリをインストール

```R
library("ggplot2")
```
でライブラリを読みこむ

```R
x <- -100:100
y<- x*x*x
qplot(x,y)
```
でグラフ描画

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/405484/f9d35a45-adf8-13a3-15cf-234d2f0f2d45.png)

Rstudio、なんか使い勝手がSpyderに近い。



# グラフ

```R
x <- 1:10
x <- c(x,x*2)
qplot(x,binwidth = 1)
```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/405484/0da89fec-241d-75c5-f2a2-cf6b2d460047.png)

$c$で配列の結合
「$?$関数名」でHelpページが開ける

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

https://www.kkaneko.jp/pro/r/rpackage.html

ここで、

```R
utils:::menuInstallPkgs()
```

でインストールめにぃゅうからインストール

`pryr`はこれでインストールできた

# factor
要素と数値を紐付ける

```R
配列 <- factor(元配列)
```

例

```R
a <- c("poteti","cola","spagettie","cola")
a <- factor(a)
```
これで数値化完了

```R
a

# poteti    cola      spagettie cola     
Levels: cola poteti spagettie
```
中身には元の配列を数値化したものと対応する要素(level)が入っている


```R
attributes(a)

$levels
[1] "cola"      "poteti"    "spagettie"

$class
[1] "factor"
```

# attributes
クラスがわかる
アトミックベクトルはNULL

```R
> a<- c(1,2,1)
> attributes(a)
NULL
> dim(a) <- c(1,3)
> a
     [,1] [,2] [,3]
[1,]    1    2    1
> attributes(a)
$dim
[1] 1 3
```

# attr
attributesの指定要素を取り出し・代入

```R
a <- c("poteti","cola","spagettie","cola")
a <- factor(a)
attr(a,"level")
[1] "cola"      "poteti"    "spagettie"
```

# structure
attrで要素の代入をするのを1行でやれる？

```R
a <- c(1,1)
symbol <- "tinb"
structure(a,symbols = symbol)
a

[1] 1 1
```

# dim , matrix , array

3つのちがい

1. dim -> 基本的な整形のみ
1. matrix -> 2*2に特化
1. array -> 任意形状


# 実行環境・オリジン環境

少し難しいです。

変数・関数のスコープに近い話っぽいです。

# S3,4,5
Rの前体であるS-PLUSの関数

# for

```R
for(value in that){

}
```
pythonに近い

```R
expand.grid(1:3,1:3)

> expand.grid(1:3,1:3)
  Var1 Var2
1    1    1
2    2    1
3    3    1
4    1    2
5    2    2
6    3    2
7    1    3
8    2    3
9    3    3
```
全ての組み合わせを出力する

```R
while(TRUE){
    break
}
```
も使えます。`break`も使えます。