🍭knitrでSQLの実行結果を出力する際はengine.optsを指定する
Rによるレポート作成で用いられる{knitr}
パッケージでは、RだけでなくbashやPython、SASと言った多様な言語の実行を可能にしている。RMarkdownのチャンクとして呼び出すわけだけど、MySQLをエンジンにした場合にちょっと躓いた(これをやる機会はなかなかないだろうけど、今日の私には必要だったのだ...)。
{r, engine='mysql'} use mysql; show tables; # ERROR 1045 (28000): Access denied for user 'uri'@'localhost' (using password: NO) # Calls: <Anonymous> ... process_group.block -> call_block -> block_exec -> in_dir -> engine # In addition: Warning message: # running command ''mysql' -e 'use mysql;
いや、そもそもデータベースに接続できないよ!って怒られる。というわけでこのチャンクの前に
{r, engine='bash'} mysql --user=root --password=pass
をしても、正常に出力されない...。困ったナ、となって調べてみたら解決策が見つかった。チャンクオプションのengine.optsに接続に必要なbashスクリプトを記述しておけば良い。
{r, engine = 'mysql', engine.opts = "mysql --user=root --password=pass"} use mysql; show tables; exit続きを読む
⭐️PDFの情報・文章をRでごっそり取得する
便利なRパッケージを見つけたのでメモがてら紹介しておきます。以前、Rを使ってPDF上のテキストを取得するパッケージとして{tm}
パッケージを紹介しましたが、同様の機能をもった{pdftools}
は以下の特徴があります。
- PDFがもつ各種の情報やテキストを取得できる
- 日本語も問題なし
- PDFがロックされている場合、パスワードで開ける
- PDFを画像として出力できる
開発者はrOpenSciの一員でもあるJeroen Oomsです。
{tm}
パッケージでは日本語が含まれるPDFを扱う際にはちょっとした工夫が必要でしたが、{pdftools}
では日本語の出力も問題なく行うことができてちょっと感動しました。機能としてPDFの情報を得る、ということとPDFを画像として出力する、というものがあります。
🔰 使用例
続きを読む🌱Google Cloud Vision API で生物の同定は可能?
機械学習ベースで画像認識・分類を行うGoogle Cloud Vision APIをR上で利用するコードをdichikaさんが書いてくれたので、それを使って手持ちの写真からいろいろな分類群の生物(主に植物)を同定することが可能なのかを検証してみたい。
- 🌿 植物編
- 🐄 植物以外の分類群編
- 🐝 昆虫綱
- 🍄 菌類
- 🐟 魚類
- 🐓 鳥類
- 🐶 哺乳類
- 👻 擬態編
- 🍵 所感
🌿 植物編
まずは簡単そうなものから。
画像は基本的にFlickrにアップロードしたものを表示しているが、実際に使ったのはすべてローカルにあるファイル。あと、出力した結果を見やすくするために{formattable}
を使って、ちょっと手を加えた。
library(magrittr) library(formattable) library(jsonlite) library(dplyr)
getResult("watermelon.jpg", "LABEL_DETECTION") %>% content(as = "text") %>% fromJSON() %$% responses$labelAnnotations
description | score |
---|---|
💮watermelon | 0.94329876 |
produce | 0.78450352 |
melon | 0.78298116 |
flower | 0.77830565 |
food | 0.76912522 |
dish | 0.74153781 |
fruit | 0.67084348 |
vegetable | 0.61176038 |
ingredient | 0.56144458 |
お、すごい。正解。低スコアの候補にdishとかingredientがあるのも面白い。
続いてはこちら。イチョウの写真。
続きを読む