R言語(ベクトルでいろいろな数列)

R言語ベクトルの続きです。
いろんな数列を作ります。

1から10までの自然数

> a=1:10
> a
 [1]  1  2  3  4  5  6  7  8  9 10
>

連番だとこんなに簡単に作れるのに、c()関数はすごく面倒な気がします。R言語を勉強していけば、c()をわざわざ使う意味というのがが分かるのかもしれませんが。

2から20までの偶数

> a=(1:10)*2
> a
 [1]  2  4  6  8 10 12 14 16 18 20
>

とても簡単に、ベクトルに格納されている値すべてが2倍されたので、初めて見たときは感動しました。

> a=(1:10)*2-1
> a
 [1]  1  3  5  7  9 11 13 15 17 19
>

パターンの繰り返し

> rep(c(1,5,0),3)
[1] 1 5 0 1 5 0 1 5 0
> a=rep(c(1,5,0),3)
> a
[1] 1 5 0 1 5 0 1 5 0
>

あえて短い関数名なんでしょうか。repはrepeatとすぐに想像つきませんでした。

ランダム

> a=sample(1:10)
> a
 [1]  9  4  2  6  5  1 10  7  3  8
>

これも、shuffleじゃないんですね。sampleという関数名は新鮮です。

平方数

> (function(x)return(x*x))(1:10)
 [1]   1   4   9  16  25  36  49  64  81 100
>

もっと良い方法があるのかもしれませんが思いつかず、無名関数を仕方なく使いました。

円周率一文字ずつ

> a=strsplit(gsub("\\.","",as.character(pi)),"")
> a
[[1]]
 [1] "3" "1" "4" "1" "5" "9" "2" "6" "5" "3" "5" "8" "9" "7" "9"

>

でもこのままでは、ベクトルではなくリストので、unlistを使ってベクトルにします。as.integerは、整数化。

> b=as.integer(unlist(a))
> b
 [1] 3 1 4 1 5 9 2 6 5 3 5 8 9 7 9
>

R言語を使えば、とても簡単に数列生成ができますね。

コメント

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