RでBKB

いい話がある。
http://gg-hogehoge.hatenablog.com/entry/2014/11/01/124501
私もバイク川崎バイクは大好きなのでRで作ってみた。
Windows7なので前準備としてkakasiをインストールしてPATHを通している。
RMeCabパッケージでMeCabを、Nipponパッケージでkakasiを叩いている。

結果

こんな感じ。

> getBKB("私は世のいはゆる健全なる美徳 清貧だの倹約の精神だの 困苦欠乏に耐へる美徳だの 謙譲の美徳などといふものはみんな嫌ひで 美徳ではなく 悪徳だと思つてゐる")
file = C:\************** 

私は世のいはゆる健全なる美徳 清貧だの倹約の精神だの 困苦欠乏に耐へる美徳だの 謙譲の美徳などといふものはみんな嫌ひで 美徳ではなく 悪徳だと思つてゐる 
美徳 倹約 美徳 
b! k! b! 
ひぃーあ!!!
> getBKB("君は僕のことを馬鹿だという")
file = C:\**************

君は僕のことを馬鹿だという 
僕 こと 馬鹿 
b! k! b! 
ひぃーあ!!!

コード

getBKB <- function(txt, items=c("名詞", "動詞","形容詞","副詞")){
  require(RMeCab)
  require(Nippon)
  tmpdir <- tempdir()
  td <- tempfile("tmp", tmpdir = tmpdir)
  write(txt ,  file = td)
  res_mecab <- RMeCabText(td) # ファイル名出力を抑制したいがやり方がわからない
  # 分かち書きの結果(語、品詞、カナ)を取得
  res_mecab <- do.call("rbind", lapply(res_mecab, function(x)x[c(1,2,10)]))
  trg_kakasi <- res_mecab[res_mecab[,2]%in%items, 1]
  # kakasiでアルファベットに変換して語の先頭一文字のみを取得
  headchar <- paste(collapse="", lapply(strsplit(kakasi(trg_kakasi), split=""), function(x)x[1]))
  if(regexpr("b.*k.*b",headchar) == -1){
    return("NoBKB...")
  }
  # bkbの探索
  num <- regexpr("b.*k.*b",headchar)[1]
  num2 <- regexpr("k.*b",substring(headchar, first=num+1))[1] + num
  num3 <- regexpr("b",substring(headchar, first=num2+1))[1] + num2
  # 結果出力
  bkbword <- trg_kakasi[c(num, num2, num3)]
  cat(paste("\n",txt,"\n",
            paste(collapse=" ", bkbword), "\n",
            "b! k! b!","\n","ひぃーあ!!!"
  ))
}

備考

RMeCabTextの結果として出力されるファイル名を抑制したいのだがやり方がわからない。
(追記)
Mecabの仕様でありRでは御しがたいとのアドバイスをいただいたので、一時ファイルに飛ばすことにしました。
ありがとうございました!

  capture.output(res_mecab <- RMeCabText(td), file=tempfile("tmp", tmpdir = tmpdir))