ワイルドカード*
を含むコマンド引数を使用してRscriptを実行すると、引数はファイルパスの文字ベクトルに展開されます一致するものがなければ合格する。ワイルドカードを常に渡す方法はありますか?スクリプト内で自分で扱うことができます(たとえば、Sys.glob
などを使用します)。ここでRscriptにコマンドライン引数でワイルドカードを強制的に渡すことはできますか?
は、端末から実行し、最小限の例です:
ls
## foo.csv bar.csv baz.txt
Rscript -e "print(commandArgs(T))" *.csv
## [1] "foo.csv" "bar.csv"
Rscript -e "print(commandArgs(T))" *.txt
## [1] "baz.txt"
Rscript -e "print(commandArgs(T))" *.rds
## [1] "*.rds"
編集:私は、この動作はbashのではなく、Rscriptからのものであることを学びました。特定のRスクリプトではなくRscriptコマンドでワイルドカード展開を抑制するために、R内からこの動作を回避する方法はありますか?私の場合、複数の個々のRDSファイルの内容をリストに連結し、結果をout.rds
に保存する2つの引数、Rscript collapse.R *.rds out.rds
を持つ関数を実行したいとします。しかし、ワイルドカードはRに渡される前に拡張されているので、2番目の引数が指定されているかどうかをチェックする方法はありません。
Windows *は拡張機能を搭載していないため、あなたは* nixにいると思います。 http://stackoverflow.com/questions/11456403/stop-shell-wildcard-character-expansion –
いくつかの例を投稿する... plzを参照してください。 –
@ 42-ありがとう!例を追加しました。 – Empiromancer