id:ujihisaがRubyKaigiでRubyの中でHaskellとかを書いていたりして、とても楽しそうだったので、僕もRの中でRubyを使いたいと思った!!
なので、やろうとしたんだけど、RにはEOFみたいなヒアドキュメントがない。Rのコードの中にpasteとかでつなぎまくればどうにかなるんだけど、Rubyのコードの中に「"」とかが出てくると、途端にややこしくなる。で、正規表現とかでどうにか処理をしようとしていたんだけど、「'」とかもあったりして、任意のコードで色々できるようにするのは難しそうであった。。。
でも、途中で思い出した!!Rubyにはシンボルを文字列っぽい感じで使うことができるんだった!!ということでRubyの「"」と「'」をシンボルで書き換えたようなコードを実行できるようになった!!幸せ!!例えば、Twitterにpostするような関数はこんなの。
post <- function(update){ ruby <- paste(" require :rubygems.to_s require :twitter.to_s name = :username.to_s password = password.to_s twit = Twitter::Base.new(name,password) twit.update(\"",update,"\") ",sep="") system(paste("echo '",ruby,"'"," | ruby ",sep="")) }
で、こういう風に使える。
post("blogにpostしようと思ったけど、昨日飯何もくってねええええええ")
Rの実行結果とかも送れちゃうよ!!素敵!!
post(eval(parse(text="apply(cars,2,sum)")))
これを.Rprofileとかに書いておけば、Rをやってる時にはいつでもTwitterにpostできますね!!Rで快適に連投する11の方法の一つ目ができました!!