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言語を使えば、とても簡単に数列生成ができますね。
コメント