as.Dateするときはタイムゾーンをちゃんと指定しよう問題

R

POSIXctな時刻データにas.Dateすると、1日前の日付に変わってしまう。 > as.POSIXct("2001-01-01 00:00:01") [1] "2001-01-01 00:00:01 JST" > as.Date(as.POSIXct("2001-01-01 00:00:01")) [1] "2000-12-31" これはタイムゾーンを指定しないとGMTと解釈され…

RStudioでPull/Pushボタンがグレーアウトしている時の対処

R

コマンドラインからgit pushする際に -u をつけてpush先のブランチをデフォルト設定しておくこと。 https://www.r-bloggers.com/things-i-forget-pushpull-greyed-out-in-rstudio/ https://qiita.com/sunstripe/items/a39f4bb835e1f08760e7そもそもVersion C…

tidyrのspread()の列の並べ替えを明示的に指定する

R

tidyrパッケージのspread()でwide-formatのデータに変換した時の列の順序を明示的に指定したい。方法はいくつかあるが、keyに指定する列にfactorでlevelを与えておくのがわかりやすかったので採用。 https://stackoverflow.com/questions/29381069/implicit-…

write.xlsxで複数シートに一度に書き込む

R

最近、XLConnectパッケージからopenxlsxパッケージに鞍替えしました。 理由は少しでも大きななデータをExcelシートに出力しようとするとXLConnectでは対応できないケースがあったからです。 で、openxlsxについての記事はたくさん書かれているのだけれども、…

口コミからプロバイダの速度を比較する

R

プロバイダわからん。 とりあえず下りの速度が遅すぎなければいい。 ということで口コミサイトの結果から比較する。 以下書きなぐりコード。 library(rvest) library(dplyr) library(tidyr) library(stringi) # 以下よりソースをダウンロード # http://netsp…

Rでモダーンにテキストマイニングする本の話

R

Text Mining with R - A Tidy Approach という本が最近出ました。Text Mining with R: A Tidy Approach作者: Julia Silge,David Robinson出版社/メーカー: O'Reilly Media発売日: 2017/07/02メディア: ペーパーバックこの商品を含むブログ (1件) を見る著者…

Rでパスからファイル名を抽出したいときはbasename()

R

いつも忘れて正規表現とか書きがちなのでメモ。 > path <- "/Users/dichika/teramonagi.png" > basename(path) [1] "teramonagi.png"

クリップボードとdputでデータを共有する

R

Rのデータ整形について質問したいんだけどデータはExcel上にある、そして質問は今この瞬間に投げかけたい、ファイルに出力している暇などない、そんな事態、あると思います。 そんな時はdput関数を使ってください。 クリップボードにコピーした結果を共有す…

パッケージビルド時に no packageと言われた時の対処法

R

パッケージビルド時に以下のようなメッセージが出た。 Error in loadNamespace(i, c(lib.loc, .libPaths()), versionCheck = vI[[i]]) : there is no package called ‘bigrquery,dplyr’ パッケージが無いといわれているが、いずれのパッケージもインストール…

Rで集中線を描く

R

写真から顔を検出したら集中線を描くのが紳士のたしなみ。 以下のアルゴリズムを参考にRでタカヤナギ=サンに集中線を描きます。 http://stamefusa.hateblo.jp/entry/20120115/1326636719 顔領域の検出については以前の記事を参考のこと。ひとまずこんな感じ…

Rmd上でhtmlwidget系パッケージを用いて複数出力する

R

Rmarkdown上でhtmlwidget系のパッケージを用いて出力する際、以下のようにforループを回して複数の出力を実現しようとするとうまくいかない。 ```{r} library(dplyr) for(s in unique(iris$Species)){ tmp <- iris %>% filter(Species == s) datatable(tmp) …

Rの良いところと悪いところうんぬんのメモ

R

たまに見かける「Rの良いところは統計家によって開発されたことだ。そしてRの悪いところは統計家によって開発されたことだ」という言葉、Bow Cowgillが言ったらしい。 I was on a panel back in 2009 where Bow Cowgill said, "The best thing about R is th…

集合写真で水中メガネの人に枠を付ける

R

前回の記事の集合写真を拡大すると、さらに細かくメガネの種類を検出できるらしい。 http://uribo.hatenablog.com/entry/2017/04/05/224401ということでメガネの種類ごとに色分けした顔領域を描画したい。 画像の読み込みと拡大 画像の拡大には今回はmagick…

sfパッケージのst_というプレフィックスの語源

R

sfパッケージの関数にはst_というプレフィックスがついているのだが、この由来がvignetteやreferenceにも書いておらずもやもやしていた。 sfパッケージなんだからsf_じゃないのかと。 st_as_sf()なんて、stオブジェクトをsfオブジェクトにする関数じゃないの…

集合写真のメガネの数をカウントする

R

こんな話がある。フーターズに行って「わーお客さんたちみんなメガネですねー」と言われてからコンタクトを真剣に検討している— 煮穴子 (@dichika) 2013年5月8日実際、昨晩開催されたGlobal TokyoRの集合写真においてもメガネが目立つ(ゲストスピーカーのHe…

httrパッケージのOAuthキャッシュ

r

httrパッケージのOAuthのキャッシュの場所はoptions()で設定する。 bigrqueryを使ったパッケージをチームで共有したい時に利用した。 options("httr_oauth_cache"="~/.httr-oauth")

日付を丸める関数はlubridateパッケージを見よ

R

いつも忘れるのでメモ。 round_date()は気をきかせすぎな気もするのでfloor_date()をとりあえず使っていこう。 library("lubridate") > floor_date(as.Date("2017-03-22"),"month") [1] "2017-03-01" > round_date(as.Date("2017-03-22"),"month") [1] "2017…

またおまえかtibble

従来の集計処理をdplyrに置き換えていく中でこういうエラーが出た。 Error in function_list[[k]](value) : (list) object cannot be coerced to type 'double' これまでは問題なく集計処理できていたのにdplyrを使った途端このエラーである。 問題を突き止…

岡村靖幸のWikipedia記事から人名を抽出する

最近スクレイピングしてないので素振りをすることにした。 今回は岡村靖幸のWikipedia記事内の経歴の項目における人名を抽出して眺めてみたい。 以下の流れで進める。1. ページを眺めて、スクレイピングの対象とする文章が埋め込まれている場所を特定する。 …

XLConnectにtblクラスのデータをつっこむとエラーになるから注意

XLConnectにdplyr等で操作した後のtblクラスのデータをつっこむとエラーが出る。 たとえば以下のようなコードを実行する。 smp <- loadWorkbook("sample.xlsx", create=TRUE) smp["サンプル"] <- iris %>% group_by(Species) %>% tally() こういうエラーが出…

Google Cloud Vision APIを使ってAKBのデータを把握する

R

こんな話がある。兼子毅(2015)『ゼロから始めるRー四則演算から多変量解析まで』日科技連は、サンプルデータの公開をしていないのかな?? AKB48の年齢と身長のデータとか、手で全部打つの辛い。。。一発で変換できなさそうな名前も多いし。。。 pic.twitt…

plotlyで複数の図を並べて描く

R

plotlyで複数の図を並べて描くときはsubplot関数を用いる。 subplotというキーワードさえ覚えておけばあとは検索するといくらでも例が出てくる。 library("ggplot2") library("plotly") g <- ggplot(economics, aes(x = date, y = uempmed)) + geom_line() p…

Rのplotのグラフィックパラメータの「略称」一覧

R

Rのplotのグラフィックパラメータは覚えにくい。 しかしそれぞれの略称が何を示しているかわかれば多少は覚えやすくなる。 これをPaul Murrellがまとめてくれている。 https://www.stat.auckland.ac.nz/~paul/R/parMemnonics.html ほんとはこれヘルプに掲載…

Shinyで日本語を使うとTRUE/FALSEが必要なところが欠損値です

R

以下のように日本語を使うと「TRUE/FALSEが必要なところが欠損値です」というエラーが出てレンダリングされない。 selectInput('value1', '値', 90:100) とりあえず英字のラベルにすれば問題ない。 Windowsで開発してCentOSのShiny Serverに上げているのが問…

Rでリファラを設定してコンテンツを取得する

R

curlとかwgetだと一行だろうけどRでやりたい。 リファラでアクセス制限をかけている場合のPDFコンテンツの取得の一例を以下に示す。 add_headersでリファラを設定してGETした後、バイナリデータとして書き出せば良い。 library("httr") u <- "目的とするURL"…

Shiny-serverでflexdashboardを動かす

R

Shiny-serverでflexdashboardをデプローイする方法がわからなかったのでメモ。 通常は以下のサイトでも解説されているようにui.Rとserver.Rを所定の場所に設置しておけば、 http://IPアドレス:3838/ディレクトリ名 という形でアクセスできる。 http://estrel…

shinyで待ち時間にメッセージを表示する

R

withProgressが手っ取り早い。 messageにメッセージを指定して、その後に待ち時間が発生する処理をブロックで指定する。 renderText({ withProgress(message = '計算中', { input$hoge }) }) 参照クラスのProgressを用いるという方法もあるらしい。 http://s…

[R]flexdashboardをshinyアプリとしてレンダリングする時はrun

flexdashboardをshinyアプリとしてレンダリングする時はrenderじゃなくてrun。 flexdashboard::flexdashboard()のexampleにはhtmlにレンダリングする例が載っているので間違えがち。 rmarkdown::run("dashboard.Rmd")ちなみにうっかりrenderすると、以下のよ…

paste0関数の挙動

R

こんな話がある。paste0("aiueo", 1, 2, sep = "=", collapse = "&")[1] "aiueo12=" #へんなのR— Shinya Uryu (@u_ribo) August 18, 2016 結論からいえば、三連ドット(...)で引数を受ける+引数のチェックを明示的に行わなかった結果だと思われる。 原因を…

10進数を2進数に変換する

R

なるべく組み込み関数で処理したい。intToBits関数を使うのが良さそう。 以下は16桁の2進数で表現している。 > paste(rev(as.integer(intToBits(10739))[1:16]), collapse="") [1] "0010100111110011"