結論
空文字でgrep
する。
$ find . | xargs grep ""
空文字でgrep
する。
$ find . | xargs grep ""
> expand.grid(c('a', 'b', 'c'), c('1', '2', '3')) Var1 Var2 1 a 1 2 b 1 3 c 1 4 a 2 5 b 2 6 c 2 7 a 3 8 b 3 9 c 3
例えば、「10段階にカテゴライズされた年齢」と「性別」に対して組み合わせを求めたい時とかに使う。
止めたい位置でbrowser()
を実行する。
例:
このようなスクリプトがあったとする。
a <- 1
止めたい位置にbrowser()
を挿入する。
a <- 1 browser()
実行時にconsoleが起動し、対話的にコードを実行できる。
Browse[1]> a [1] 1
browser()
が実行された箇所で参照できる変数や関数が自由にいじれる。
これはデバッグに大変便利。
> string_vector <- c('abc', 'def', 'ghi') > Reduce(function(x, y){ paste(x, y) }, string_vector) [1] "abc def ghi"
こうすれば行ける。
もっとシンプルな方法は無いものか…
ある変数のclass
をチェックして、想定外の値だったらstop()
させるような処理が書きたい。
stop()
させた時、エラーメッセージとしてチェックした変数のclass
を表示したい。
この時、class()
の戻り値は文字列のvector
である可能性がある。
これをいい感じに表示したかった。
class
を複数持っている例:> class(data.table()) [1] "data.table" "data.frame"
# 期待するカラム(の名前) expect_column_names <- c('V1', 'V2') # 判定したいテーブルが持っているカラム。 # 「V3は別にマストで存在していて欲しい訳ではないがあっても問題ない」という条件で判定したい。 column_names <- names(data.table(V1=1, V2=2, V3=3)) all(expect_column_names %in% column_names) # TRUE
あるdata.tableが指定したカラムを備えているか判定したい。ただし指定したカラム以外のカラムがくっついていてもTRUEを返させたい。
言い換えると、「期待するカラム名
がdata.tableが持つカラム名
の部分集合か判定したい」という事である。
上記でその判定ができる。
eval
以外のいい方法が見つからなかった。sample_data_table <- data.table(V1=1, V2=2) new_column_name <- 'new_column' expr <- parse(text = paste(new_column_name, ":= V1+V2")) sample_data_table[, eval(expr)] ## Checking the result print(sample_data_table) # V1 V2 new_column # 1: 1 2 3
new_column_name
で指定したカラム名のカラムを追加している。V1+V2
sample_data_table[, new_column := V1+V2]
new_column
の部分を変数で指定するためにeval
している。# 処理 system("osascript -e 'display notification \"done.\"'")
AppleScript
から通知を行う事ができる。osascript
を使うことで、AppleScript
のコードをシェルからeval
できる ← これでshellから通知を行えるsysytem()
を使うことで、shell
のコードをRからeval
できる。