データサイエンスな人たちがRでゴニョゴニョしていろんなデータをグラフにしてくれてるんですけど、僕のいるチームからの視点だと、ちょっとカユいところに手が届いてないんですよね。
なんですけど、データサイエンスな人たちのリソースは貴重で、気軽に色々お願い出来ない雰囲気なので、まぁリポジトリも社内には公開されているし、自分でやるかっていうのでRscriptをちょっと触ってみる事にしました。
インストール
練習
まずは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さえあれば既存のコードの修正くらいは出来そうなので、もうちょっと触ってみようかなぁと言うところです。