0
Help us understand the problem. What are the problem?

posted at

updated at

駿台予備校広告のあの答え合わせをRで一行でやってみた

https://qiita.com/sano192/items/a27a481395ce8827bbf6
https://qiita.com/TSeri/items/6958d0ad98d4beb7571d

要するに,6文字の順列を作り,重複を省いて,ソートして,100 番目の要素を出力する。
まあ,どんなパッケージを使っても良さそうなので,順列を生成する e1071::permuttions を使う。

library(e1071)
sort(unique(apply(permutations(6), 1, function(i) paste(unlist(strsplit("GAKKOU", ""))[i], collapse=""))))[100]

ところで,dplyr とかの %>% 演算子を使って,パイプで書いてみます。

permutations(6) %>% t %>% applyx %>% unique %>% sort %>% ans

applyx とか ans なんて見たことないですよね。dplyr とか tidyverse のマニュアル見てもないですよ。

applyx = function(a) apply(a, 2, function(i) paste(unlist(strsplit("GAKKOU", ""))[i], collapse=""))
ans = function(a) a[100]

と定義しているだけです。なあんだ!と思いますよね。
パイプで書けるように,関数を定義しているだけです。
これはユーザレベルだからバカバカしいと吐き捨てればよいのですが,tidyverse の開発側がやれば,素晴らしい!となるんですかね。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Sign upLogin
0
Help us understand the problem. What are the problem?