n-gram が簡単にできそう

http://www.okada.jp.org/RWiki/?R%A4%CE%B4%F0%CB%DC%A5%D1%A5%C3%A5%B1%A1%BC%A5%B8%C3%E6%A4%CE%BB%FE%B7%CF%CE%F3%A5%AA%A5%D6%A5%B8%A5%A7%A5%AF%A5%C8%B0%EC%CD%F7 を見てると、embed というのがあった。

> example(embed)

embed> x <- 1:10

embed> embed (x, 3)
     [,1] [,2] [,3]
[1,]    3    2    1
[2,]    4    3    2
[3,]    5    4    3
[4,]    6    5    4
[5,]    7    6    5
[6,]    8    7    6
[7,]    9    8    7
[8,]   10    9    8

ruby の each_cons っぽい感じ。n-gram が簡単にできそう、と思ったら数値しかだめだった。
文字列で行うなら、apply とアクセスを利用して次みたいにやればよさそう。

> str <- strsplit("日本語でも大丈夫","")[[1]]
> apply(embed(seq_along(str),3), 1, function(x) str[rev(x)])
     [,1] [,2] [,3] [,4] [,5] [,6]
[1,] "日" "本" "語" "で" "も" "大"
[2,] "本" "語" "で" "も" "大" "丈"
[3,] "語" "で" "も" "大" "丈" "夫"

という感じかな。そのうちマルコフ連鎖で文を生成してみるかな。