blog

clidatajp

CRANからの返事があり,細かな修正点が3つあった.修正して,再投稿した. DESCRIPTIONファイルのdescriptionフィールドには,ウエブサイトをhttp://...のように入れること. Please provide a link to the used webservices to the description field of your DESCRIPTION file in the form http:... or https:... with angle brackets for auto-linking and no space after ‘http:’ and ‘https:’. 関数の戻り値をちゃんと書き,戻り値がない場合は,「No return value, called for side effects」のようにすること. Please add \value to .Rd files regarding exported methods and explain the functions results in the documentation. Please write about the structure of the output (class) and also what the output means.

clidatajp

clidatajpというパッケージを作った. CRANからの返事はまだ無い. どこで処理が止まっているのかは,とんと見当がつかない. https://github.com/matutosi/clidatajp/blob/main/READMEjp.md ウソです.普通に時間がかかっているだけだと思います.

RのNSE(Non-Standard Evaluation)

RのNSE(Non-Standard Evaluation)というのがあって,便利な面とそうでない面がある. 本来なら,列名を指定するのに,“displ"のように指定すべきところを,ダブルクオーテーションなしでdisplとできるので,普段は便利だ. library(tidyverse) mpg %>% dplyr::select(displ, year, cyl) ただし,パッケージ開発をするときにこの使い方をしていると,devtools::check()でWarningsとかNotesの対象になる. 新たな列名として使いたいときには,以下のようにする必要がある.変数に入れた文字列を使う時,既存の列の指定では.data[col_nameとして,新たな列のときは{{col_name}}({{“year_displ”}}はエラー)とする. col_1 <- "year" col_2 <- "displ" new_col <- "year_displ" # `:=`を通常の関数みたいに使用 mpg %>% dplyr::transmute(`:=`({{new_col}}, stringr::str_c(.data[[col_1]], "_", .data[[col_2]]))) # 以下でも同じ mpg %>% dplyr::transmute({{new_col}} := stringr::str_c(.data[[col_1]], "_", .data[[col_2]]))

正規表現

「詳説 正規表現」を読み始めた. まだ1章しか読んでないが,結構勘違いしていたことや知らなかったことが多い.

MacでSelenium

準備:色々とインストール # Homebrew /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" # Chorome driver brew install chromedriver # java brew tap AdoptOpenJDK/openjdk brew install --cask adoptopenjdk12 # check java installation java -version # download selenium curl -OL https://selenium-release.storage.googleapis.com/3.141/selenium-server-standalone-3.141.59.jar mv selenium-server-standalone-3.141.59.jar /Applications/ seleniumの実行と # run selenium java -jar /Applications/selenium-server-standalone-3.141.59.jar # ちょっとまっていると色々と表示される # check process id ps -A | grep 'java' # 12708 ttys000 0:00.20 /usr/bin/java -jar /Applications/selenium-server-standalone-3.141.59.jar # 12802 ttys000 0:00.00 grep java # stop selenium # 数字は1行目の左端に表示されるprocess idを入力 kill 12708

RSelenium

RからSeleniumを操作しようとだいぶ前に色々とやっていたが,RSeleniumが動かず断念した. 一応,Pythonでやりたいことはしたが,それでもやはりRが慣れていて便利なので,再挑戦した. 色々と試した結果,Seleniumのバージョンが4.0以上の場合は,RSeleniumが動かないことがわかった. バージョン2や3だとうまく動いた. Pythonで書いたコードをRに書き換えた. Pythonではdatarを使っていたので,Rへの移植はそれほど難しくなかった.

datar

JavaScriptでのウェブページ操作で,ページ移動のたびにlocalStorageやsessionStorageから関数群を引き出すというトリッキーな使い方をしていた. これはこれで良いが,結局手作業が必要なのが不便だ. そこでSeleniumを導入して自動化を試みたものの,RSeleniumがどうもうまくいかない. Pythonならつながるので,Selenium自体やChromeDriverはちゃんと動いているようだ. 仕方ないので,Pythonで操作しはじめたが,Rのtidyverseの便利さには敵わない. と思っていたら,datarというPythonのライブラリを見つけた. できる限りtidyverseとほぼ同じようにやってしまおうというライブラリのようだ. 試しに使ってみたら,ほとんどRの書き方でできる. これは便利だ. datarに慣れるとPythonを使っているのか,Rを使っているのか分からなくなりそう. まあ,そもそも使えれば良いので,そんなことはどっちでも良い.

sessionStorage

正規のHTML内に書かれた操作ではなく,デベロッパーツールのConsoleにJavaScriptを打ち込んでウェブページを色々と操作しようとしている. ページが移動すると,関数がクリアされるのが難点だ. sessionStorageを使って,関数やその他のデータを保存しておけば,なんとかなりそうだ. ただし,すごくトリッキーな使い方で,本来の使い方ではなさそう.

プログラミングと文章の構造化

プログラムを書いていると文章を構造的に書くのに役立つと思う. 関数が1つの段落だとすると,関数のトピックセンテンスは返り値である. 何を出力したいかが明確でないと,関数は書けない. ある関数から次の関数につなぐのは,引数や返り値である. これによってプログラムがつながっていく. 文章もキーワードなどによってつながっていく.

手作業とスクリプト

JavaScriptを勉強していると,普段使うwebツール上でマウスを駆使してクリックしているのがアホらしくなってきた. 一度だけの作業ならまだしも,同じような作業の繰り返しを定期的にしなければならないことがある. チェックボックスを探してそれをクリックするなどだ. 手作業で同じことをするのは面倒だし,間違いのもとである. JavaScriptで,使いそうなスクリプトを組んでみた. たぶん,それなりに使えそうな感じ. 手を抜くための苦労はいとわない.