カメヲラボ

主にプログラミングとお勉強全般について書いてます

Rプログラミング入門(3)

普通にコマンドプロンプトを使いたい!

Rのコンソール上でなくて、Rのソースコードテキストエディタで書いて、コマンドプロンプト(とかCygwinのコンソール)上でプログラムを動かしたい!という人もいると思うので、そちらも説明しておきます。

まずは、RのバイナリのPathを設定しておきましょう。普通にインストールしたなら、"C:\Program Files\R\R-2.9.0\bin"だと思いますので、コントロールパネル→システム→詳細設定→環境変数でPATHという変数の最後にセミコロン";"をつけて、その後ろに上記のPathを付け加えてやります。

次にコマンドプロンプトを開いて"Rscript"と入力して、Usageが表示されればOKです。

Rscript file.R

でプログラムが実行できます。

今更ながら演算子・制御文

注意点だけ簡単に説明しておきます。

演算子
加算  +
減算  -
乗算  *
除算  /

は、まあ問題ないと思います。あとは、

べき算  ^
剰余  %%
除算の商  %/%

剰余が"%"を2つ書かないといけないみたいです。商を求める演算子があるんですねー。

if文

大して問題なさそうですが、elseが行頭に来るとなんかエラーが出るみたいです。これはイケてない(;´д`)

if( ... )
  hoge()
else
  fuga()

# これはエラー
if( ... )
  hoge() else
  fuga()

# これはOK
if( ... )
{
  hoge()
}
else
{
  fuga()
}
# これはエラー
if( ... )
{
  hoge()
}else
{
  fuga()
}
# これはOK
for文

たとえば1から5までを表示するとき

for( i in 1:5 ) cat(i,"\n")

みたいに書きます。範囲はリストとかでも良いみたいなので

for( i in c(1,2,3,4,5) ) cat(i,"\n")

と書いても同じ結果になります。

それ以外

詳しくはR プログラミング Tips 大全とかを見れば良いです。

サンプル

prog3-0.R
n <- scan("stdin")

cat("n=",n,"\n")

if( n>10 ){
  cat("n>10\n")
}else{
  cat("n<=10\n")
}

for( i in 1:n )
  cat(i,"\n")

これを実行して、結果を確かめてください。

注意

上記のプログラムを実行して、適当に数字を入力した後にEnterを押してもプログラムが止まったままだと思います。「入力が終わったよ!!」というシグナルを送らなければならないので、数字を入力してEnterを押した後、さらにCtrl+Zを押して、"^Z"と表示されたのを確認してからもう一度Enterを押してください。

直接入力じゃなくて、テキストファイルに入力データを書き込んでおく方法もあります。たとえば、input3-0.txtというファイルに以下の様に書き込んで保存しておきます。

5

次に、

Rscript prog3-0.R < input3-0.txt

という風に実行してやると良いです。