※この投稿はRStudio Advent Calender 2016の12日目の記事です。
RStudioのTipsを紹介します。といっても私はTipsの紹介はしません。Tipsの紹介を紹介するだけです。
RStudioのTipsを垂れ流すだけのこのアカウントを皆さんご存知でしょうか。
フォロワー数は実に1.8万。私のようなフォロワー3桁ゴミアカウントは、Tipsを無理やりひねり出すよりも、身の丈に合わせて今はやりの「キュレーションメディア」と成り果てて、このawesomeなアカウントのツイートをひとつふたつ引用してお茶を濁すほうが世のため人のためではないでしょうか。という考えに至ったのでそうします。
TwitterのAPIからツイートをとってくる
twitteRパッケージを使ってもいいですが、あえて素のhttr
でやってみます。
ドキュメント:GET statuses/user_timeline — Twitter Developers
OAuthアクセストークンの取得
詳しくはhttr/oauth1-twitter.r at master · hadley/httr · GitHubを見てください。こんな感じです。
twtr_token <- httr::oauth1.0_token( endpoint = httr::oauth_endpoints("twitter"), app = httr::oauth_app( "twitter", key = "(Consumer Key)", secret = "(Consumer Secret)" ) )
まずはひとつ取ってくる
@rstudiotipsのツイートを、RTを除いて取ってくるのはこんな感じです。count
は最大200件まで指定できるとのことなので最大まで指定します。
res <- httr::GET("https://api.twitter.com/1.1/statuses/user_timeline.json", query = list( screen_name = "rstudiotips", count = 200, include_rts = FALSE ), twtr_token) tw <- httr::content(res)
このtw
はちょっとサイズが大きすぎるため、データ全体をここで示すことはしません。こうしたlistの構造を探索するには明日のアドベントカレンダー「list型のデータを可視化してみよう」を読めばきっとわかるはずです!
という期待はさておき、とりあえずどのような要素があるかだけでも眺めてみましょう。
names(tw[[1]]) #> [1] "created_at" "id" "id_str" #> [4] "text" "truncated" "entities" #> [7] "source" "in_reply_to_status_id" "in_reply_to_status_id_str" #> [10] "in_reply_to_user_id" "in_reply_to_user_id_str" "in_reply_to_screen_name" #> [13] "user" "geo" "coordinates" #> [16] "place" "contributors" "is_quote_status" #> [19] "retweet_count" "favorite_count" "favorited" #> [22] "retweeted" "possibly_sensitive" "lang"
text
というやつにツイートの中身が入っているようです。
tw[[1]]$text #> [1] "Want to remember when you wrote a section of R script? Type \"ts\" and press Shift+Tab to insert a section header w/… https://t.co/fo3evGvH5S"
retweet_count
、favorite_count
にはリツイート数とふぁぼ数が入っています。これを調べれば、人気のTipsがわかりそうです。その路線でいってみましょう。
tw[[1]]$retweet_count #> [1] 60 tw[[1]]$favorite_count #> [1] 170
ツイートを過去にさかのぼって取得する
max_id
というやつを指定するといいようです。ただし、max_id
に指定したIDのツイートを含まれるので、先頭の一つは取り除かないとその前のリクエストとツイートが重複してしまうことになります。なので、こういう感じでしょう。
result <- vector("list", 16) result[[1]] <- tw # 最大3200件までしか取得できないので、1度に200件取得するなら16回が限度 for (i in 2:16) { res <- httr::GET("https://api.twitter.com/1.1/statuses/user_timeline.json", query = list( screen_name = "rstudiotips", count = 200, include_rts = FALSE, max_id = tw[[length(tw)]]$id_str ), twtr_token) tw <- httr::content(res) result[[i]] <- tw[-1] } result <- purrr::flatten(result)
...なんですが、RStudio tipsのツイート数は268。そんなことをする必要はありませんでした。必要な要素だけ抜き出してきてpurrr::map_df()
でデータフレームにします。
d <- purrr::map_df(tw, `[`, c("id_str", "text", "retweet_count", "favorite_count")) dplyr::glimpse(d) #> Observations: 175 #> Variables: 4 #> $ id_str <chr> "807278080750284800", "806576818140499968", "804731706158682112", "804462... #> $ text <chr> "Want to remember when you wrote a section of R script? Type \"ts\" and p... #> $ retweet_count <int> 60, 29, 61, 0, 0, 185, 20, 0, 0, 0, 0, 43, 0, 0, 1, 22, 27, 0, 1, 31, 6, ... #> $ favorite_count <int> 170, 83, 152, 1, 0, 388, 61, 0, 1, 0, 0, 86, 0, 0, 3, 38, 60, 2, 0, 86, 8...
リツイート数+ふぁぼ数トップ5
早速ランキングを発表しましょう。
d %>% mutate(count_total = retweet_count + favorite_count) %>% arrange(desc(count_total))
5位 Profvis
Don't guess why #rstats code is slow, find out: @rstudio preview now has a profiler. More: https://t.co/htbqLJKttr pic.twitter.com/ujRLIF9Du6
— RStudio Tips (@rstudiotips) 2016年7月14日
Rのコードのプロファイリング。アドベントカレンダーの昨日の記事をまだ見ていない人は要チェックです。
4位 MarkdownエディタとしてのRStudio
Did you know that @rstudio makes a great #markdown editor? Save file as .md and press Ctrl+Shift+K to view. #rstats pic.twitter.com/tnZ5H5rBu4
— RStudio Tips (@rstudiotips) 2016年8月19日
Markdownのエディタとしても便利だよ、という話。
3位 ショートカットを見るショートカット
Wondering if there's an @rstudio keyboard shortcut for that? Press Alt+Shift+K to bring up a reference card. #rstats pic.twitter.com/O4ZTKtw33q
— RStudio Tips (@rstudiotips) 2016年5月16日
Alt+Shift+Kを押すと、キーボードショートカットのチートシートを見ることができます。地味ですが割と重宝します。
2位 flexdashboard
Build beautiful, interactive dashboards in @rstudio with the flexdashboard package: https://t.co/TlJye553Ll #rstats pic.twitter.com/IQEyfndtyT
— RStudio Tips (@rstudiotips) 2016年5月20日
ダッシュボードをつくれるパッケージです。もはやRStudioのTipsではなくてただのパッケージ紹介では...。詳しくは「おねがいぞうさん」のフレーズが鮮烈な、所沢義男さんのTokyo.RでのLTスライドを見てください。
1位 SQL
Do you use SQL with R? With R Markdown and R Notebooks, you can run SQL statements right inside the editor. https://t.co/4IG1QWIkz6 #rstats pic.twitter.com/3dyKBUwBOq
— RStudio Tips (@rstudiotips) 2016年11月21日
knitrにはR以外のエンジンもあって、例えばSQL使えるよ、という話ですね。これも、もはやRStudioのTipsなのかよくわかりません。
感想
RStudio Tips、ネタ切れ...?