LoginSignup
22
15

More than 3 years have passed since last update.

R: system関数の出力をオブジェクトに格納する

Last updated at Posted at 2016-11-14

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"
> 
22
15
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
22
15