Hello Rscript World

データサイエンスな人たちがRでゴニョゴニョしていろんなデータをグラフにしてくれてるんですけど、僕のいるチームからの視点だと、ちょっとカユいところに手が届いてないんですよね。

なんですけど、データサイエンスな人たちのリソースは貴重で、気軽に色々お願い出来ない雰囲気なので、まぁリポジトリも社内には公開されているし、自分でやるかっていうのでRscriptをちょっと触ってみる事にしました。

インストール

  • CRANとかいうCPANのパクリなサイトからインストーラをダウンロード
  • ESSというEmacsのパッケージをインストールして、ESSモードでソースは編集

練習

まずはHello World。他の言語と同じですね。

# helloworld.R
print("Hello R World!")
$ Rscript helloworld.R
[1] "Hello R World!"

次に定番のFizzBuzz。コマンドライン引数の取り方とかseqを見つけるのに手間取ったりして30分近くかかりました。リストのインデックスアクセスが1ベースなのに驚きました。テキストのformatにはsprintfが使えます。

# fizzbuzz.R
args = commandArgs(T)
max <- if (length(args) > 0) as.integer(args[1]) else 100

for (i in seq(1,max)) {
    if (i %% 15 == 0) ans <- "Fizz Buzz"
    else if (i %% 3 == 0) ans <- "Fizz"
    else if (i %% 5 == 0) ans <- "Buzz"
    else ans <- i

    print(sprintf("%d: %s", i, ans))
}

listはいつものリスト以外にPHPの連想配列的な使い方ができます。関数も特に違和感は無いですね。

# misc.R

# list
fruits <- list("apple", "orange", "banana")
for (fruit in fruits) {
    print(fruit)
}

# hash like list
person <- list(name="taichino", age=30, lang="Python")
print(person$name)
print(person$age)
print(person$lang)

# function
mysum <- function(values) {
    return (sum(values))
}
print(mysum(c(1,2,3,4,5)))

ググラビリティが悪いですけど、ドキュメントはDash.appで読めるので助かりました。

今分かっていないのは、RStudioを使わない場合、どうやってCRANパッケージを管理するのが良いのかなぁという事です。IDEを押し付けられるのは本意ではありません。

とりあえずDashさえあれば既存のコードの修正くらいは出来そうなので、もうちょっと触ってみようかなぁと言うところです。

Leave a Reply

Your email address will not be published. Required fields are marked *