はじめに こんにちは、事業会社で働いているデータサイエンティストです: 最近は会社のとあるプロジェクトで、R言語の重い処理を高速化する必要が出たので、C++とRの連携用パッケージのRcppをやり始めました。 処理対象のデータ量にもよりますが、場合によって計算時間が9割くらい削減されます。 そこで、Rcppの不思議で危険な挙動を発見したので、挙動の背後のメカニズム、理由、および対策を皆さんにお伝えしようと思います。 ただ、わかりやすさのため、コンピューターサイエンスの専門用語はなるべく使わないようにします。 詳細に興味ある方はこちらをご参照ください: では早速説明に入ります! 勝手に変数を変えられた!!! まずは、問題を単純化するため、xに2をかける処理の関数をC++(Rcpp)で実装しました。
Rプログラミング言語の安全でないデシリアライゼーションに関する記事の要約 Rプログラミング言語の実装に安全でないデータのデシリアライゼーションの脆弱性 悪意のあるコードを含むPromiseクラスオブジェクトをシリアライズし任意のコード実行の可能性 R 4.4.0でシリアライズされたデータ内のPromiseオブジェクトの使用を制限し修正 信頼できないデータのデシリアライズを避けるなどの対策が必要 PromiseクラスオブジェクトのRDSシリアライズにおける任意コード実行の脆弱性Rプログラミング言語の実装において、R 1.4.0から4.4.0より前のバージョンではPromiseクラスのオブジェクトがRDS形式でシリアライズされた際、そのオブジェクト内の値が未評価の状態で参照されると式が適切な遅延評価のタイミングより前に実行されてしまう問題が存在する。攻撃者はこの脆弱性を悪用し、悪意のあるコード
R には、バージョン 3.5(2018年リリース)で導入された ALTREP という仕組みがあります。ALTREP は alternative representation の略で、たぶん「通常とは異なるメモリ上の表現」みたいな意味です。要は「普通のベクトルのように扱えるけど中身は実は別物」みたいなものをつくれますよ、というものです。 これが、導入されてもう5年も経つんですが、いまだに公式ドキュメント(Writing R Extension、R Internals)には説明がありません。 R のソースコードがあるレポジトリの、ALTREP というブランチにひっそり入っている以下のドキュメントを読むか、既存のパッケージのコードを読むぐらいしか道がないです。 自分の頭を整理する意味も込めて、わかったことをこのブログ記事にまとめます。 ALTREP の種類 現在、ALTREP がサポートしている
RMeCabを使ううえでのトラブルシュートです。 RMeCabをインストールできない Linux/macOS LinuxやmacOSでRMeCabをインストールするにはmecab-configコマンドが必要です。 たとえばUbuntuでMeCabをaptでインストールした場合、apt install mecabではmecab-configはインストールされていません。apt install libmecab-devでlibmecab-devをインストールしたか確認しましょう。 Windows 例年4月ごろのRのリリースがあったばかりのタイミングでは、RMeCabが公開されているリポジトリに最新のR向けのバイナリパッケージがまだアップロードされていない場合があります。Windowsでソースパッケージをビルドするには、Rtoolsが必要です。Rtoolsがインストールされているか確認しましょう
2022年に書いたRで論文を書く実践的なテクニック集のテーブル編をtinytable版で書き直したものです. Quartoで書かれた英語版もありますので, そちらも参考にしてください. kableExtra, gt から tinytable の時代へ 近年, Rで表を作成するためのパッケージとして kableExtra と gt が人気を集めてきました. 私は kableExtra を使って論文(\LaTeX)で表を作成し, gt を使ってスライド (revealjs) で表を作成しており, 以前行ったRワークショップやZennでの解説記事でもkableExtraを念頭においておりました. しかし, 2024年4月現在, tinytableが従来のパッケージと比べ軽くて使いやすく, 今後のスタンダードになっていくと確信しており, 以前書いた記事を更新する必要があると考えました. この記事で
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く