Rを打ってるときにshellに🐸のがだるいです。
そんなあなたにおすすめの記事です。Rのsystem関数を打って、たとえばシェルのlsの出力をRのオブジェクトへ代入するなんてことは普通にできそうなんですが、なぜかterminalのRで打つとお漏らしします(Rのコンソールに出力されてオブジェクトには格納されない)。
> data <- system("ls") #dataオブジェクトにlsの結果をいれようとする
test.txt #おもらし
> data #dataをたたいて中身をみる
[1] 0
lsを処理するだけならlist.filesで取得しても良いのですが、Rオブジェクトに入っているファイル名を使い、そのファイルをawkでパースした結果をふたたびRに戻したりしたいわけです。ところが、上のようにsystem関数を用いてもdataオブジェクトに何も入りません。仕方が無いので、system関数のmanualをみると...
Usage
system(command, intern = FALSE,
ignore.stdout = FALSE, ignore.stderr = FALSE,
wait = TRUE, input = NULL, show.output.on.console = TRUE,
minimized = FALSE, invisible = TRUE)
show.output.on.console切ればいいんじゃね?と思った貴方、私と同類です。
> data <- system("ls",show.output.on.console=F)
引数 'show.output.on.console', 'minimized' そして 'invisible' は Windows 専用です
test.txt
>
このすっとこどっこいめ!!
正解は、internでした。
> data <- system("ls",intern=T)
> data
[1] "test.txt"
>