R言語の簡略表記

アイキャッチ。R略記についての備忘録 R

Rの備忘録です。

小数点の省略

「0.5」みたいな、1以下の少数は初めの「0」を省略しても大丈夫です。

> 0.5
[1] 0.5
> .5
[1] 0.5

関数の引数

検定とかで使うalternativeは「a」で良いです。

指定も”greater”とか書く必要はなくて、”t”、”g”、”l”で動きます。

(それぞれ両側(two.side)、下側(less)、上側(greater)検定。

> t.test(a,b,a="l")

        Welch Two Sample t-test

data:  a and b
t = -1.3668, df = 47.96, p-value = 0.08903
alternative hypothesis: true difference in means is less than 0
95 percent confidence interval:
       -Inf 0.08941762
sample estimates:
mean of x mean of y 
 1.046161  1.439870 

また、var.equalやらpaired、conf.levelなども、それぞれ「v」「p」「c」で良かったりする。

他の引数と頭文字が被ってなければ、大概は1文字で済むのです。

> matrix(1:10,nr=2,b=T)
     [,1] [,2] [,3] [,4] [,5]
[1,]    1    2    3    4    5
[2,]    6    7    8    9   10
> log(16,b=4)
[1] 2
> print(10/3,d=2)
[1] 3.3

私はこれを知るまで、馬鹿みたいに引数を打ち込んでました。

plot関数とか、すごく楽になりますよ。

データフレームの列名の省略

最近知りましたが、データフレームの列名も省略できます。

例として、組み込みデータのOrchardSpraysについてみてみましょう。OrchardSpraysには4つ列があります。

それぞれの列の名前は以下の通り

> str(OrchardSprays)
'data.frame':   64 obs. of  4 variables:
 $ decrease : num  57 95 8 69 92 90 15 2 84 6 ...
 $ rowpos   : num  1 2 3 4 5 6 7 8 1 2 ...
 $ colpos   : num  1 1 1 1 1 1 1 1 2 2 ...
 $ treatment: Factor w/ 8 levels "A","B","C","D",..: 4 5 2 8 7 6 3 1 3 2 ...

特定の列だけを取り出したいときは、普通は$(ドルマーク)に変数名を入れて、以下のようにします。

> OrchardSprays$decrease
 [1]  57  95   8  69  92  90  15   2  84   6 127  36  51   2  69  71  87  72
[19]   5  39  22  16  72   4 130   4 114   9  20  24  10  51  43  28  60   5
[37]  17   7  81  71  12  29  44  77   4  27  47  76   8  72  13  57   4  81
[55]  20  61  80 114  39  14  86  55   3  19

ところが、この場合、列名は初めの一文字だけでも機能します

> OrchardSprays$d
 [1]  57  95   8  69  92  90  15   2  84   6 127  36  51   2  69  71  87  72
[19]   5  39  22  16  72   4 130   4 114   9  20  24  10  51  43  28  60   5
[37]  17   7  81  71  12  29  44  77   4  27  47  76   8  72  13  57   4  81
[55]  20  61  80 114  39  14  86  55   3  19

同様に、他の列名も…

> OrchardSprays$r
 [1] 1 2 3 4 5 6 7 8 1 2 3 4 5 6 7 8 1 2 3 4 5 6 7 8 1 2 3 4 5 6 7 8 1 2 3 4
[37] 5 6 7 8 1 2 3 4 5 6 7 8 1 2 3 4 5 6 7 8 1 2 3 4 5 6 7 8
> OrchardSprays$c
 [1] 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 4 4 4 4 4 4 4 4 5 5 5 5
[37] 5 5 5 5 6 6 6 6 6 6 6 6 7 7 7 7 7 7 7 7 8 8 8 8 8 8 8 8
> OrchardSprays$t
 [1] D E B H G F C A C B H D E A F G F H A E D C G B H A E C F G B D E D G A
[37] C B H F A C F G B D E H B G C F A H D E G F D B H E A C
Levels: A B C D E F G H

なんてこった。今まで一生懸命長い列名を打ち込んでいたのは何だったのか。

ちなみに、他の列名と途中まで名前が被る場合は、被らなくなるところまで書けばOKみたいです。

有名なあやめ(iris)のデータならこんな感じ。

> names(iris)
[1] "Sepal.Length" "Sepal.Width"  "Petal.Length" "Petal.Width"  "Species"     
> head(iris$Sepal.L)
[1] 5.1 4.9 4.7 4.6 5.0 5.4
> head(iris$Sepal.W)
[1] 3.5 3.0 3.2 3.1 3.6 3.9
> head(iris$Spe)
[1] setosa setosa setosa setosa setosa setosa
Levels: setosa versicolor virginica

(全部表示すると長いので、head関数で一部のみ表示)

Sepal.Lengthと書かなくても、Sepal.Lまでで機能します。

中かっこ{}の省略

for文の繰り返しや、functionで関数を書く時も、1行で済む簡単なものであれば{}を省略できます。

例えば、角度を弧度法で表す関数を作るとして、

> rad <- function(x)x*pi/180

とすれば、ちゃんと動きます。{}いりません。

> sin(rad(30))
[1] 0.5

これも、もっと早く知りたかった…

コメント

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