2012-01-17 14 views
1

メイクファイルとコマンドライン引数を受け付けるRプログラムを組み合わせる際に問題があります 私はメイクファイルを書くのにはとても慣れていません。Rコマンドライン引数とメークファイル

サンプルを調理するだけです。 私はコマンドライン引数を受け取り、プロットを生成するRファイルを作成しました。 ここは私のファイルテストです.R

args <- commandArgs(trailingOnly=TRUE) 
    if (length(args) != 1) { 
    cat("You must supply only one number\n") 
    quit() 
    } 
    inputnumber <- args[1] 
    pdf("Rplot.pdf") 
    plot(1:inputnumber,type="l") 
    dev.off() 

ここに私のMakefileがあります。

all : 
     make Rplot.pdf 
Rplot.pdf : test.R 
     cat test.R | R --slave --args 10 

今の質問は、私は 何かがこのメイクRplot.pdf等であってもよいと言うことができるように--args(この場合は10)を供給する方法である-10

私はその多くのメイクファイルを理解むしろRの質問である。

すべてのヘルプは大幅に次のように、名前付き引数を定義することができ

よろしく、

サヤン

答えて

5

ここには2つの質問があります。

最初の質問は、コマンドライン引数の解析に関するもので、既にサイト上でそれについていくつか質問がありました。検索するには "[r] optparse getopt"を検索してください。 R command line passing a filename to script in arguments (Windows)

  • Is there a package to process command line options in R?
  • 、よりParsing command line arguments in R scripts

    • 2番目の質問は、基本的なMakefileの構文と使用法に関係しています。はい、ネットの周りにも多くのチュートリアルがあります。そして、あなたは基本的にそれをシェル引数に似ています。例えば以下の通りです。メイクファイルの一部(例:RInside)からRをコマンドラインフラグなどに問い合わせます。

      ## comment this out if you need a different version of R, 
      ## and set set R_HOME accordingly as an environment variable 
      R_HOME :=  $(shell R RHOME) 
      
      sources :=  $(wildcard *.cpp) 
      programs :=  $(sources:.cpp=) 
      
      
      ## include headers and libraries for R 
      RCPPFLAGS := $(shell $(R_HOME)/bin/R CMD config --cppflags) 
      RLDFLAGS :=  $(shell $(R_HOME)/bin/R CMD config --ldflags) 
      RBLAS :=  $(shell $(R_HOME)/bin/R CMD config BLAS_LIBS) 
      RLAPACK :=  $(shell $(R_HOME)/bin/R CMD config LAPACK_LIBS) 
      
      ## include headers and libraries for Rcpp interface classes 
      RCPPINCL :=  $(shell echo 'Rcpp:::CxxFlags()' | \ 
                $(R_HOME)/bin/R --vanilla --slave) 
      RCPPLIBS :=  $(shell echo 'Rcpp:::LdFlags()' | \ 
                $(R_HOME)/bin/R --vanilla --slave) 
      
      
      ## include headers and libraries for RInside embedding classes 
      RINSIDEINCL := $(shell echo 'RInside:::CxxFlags()' | \ 
                $(R_HOME)/bin/R --vanilla --slave) 
      RINSIDELIBS := $(shell echo 'RInside:::LdFlags()' | \ 
                $(R_HOME)/bin/R --vanilla --slave) 
      
      [...] 
      
  • +0

    お返事ありがとうございます –

    2

    を高く評価している:あなたはまた、Rscript test.R 10の代わりcat test.R | R --slave --args 10 を使用することができます

    $ cat Makefile 
    all: 
        echo $(ARG) 
    
    $ make ARG=1 all 
    echo 1 
    1 
    

    を。

    +0

    お返事ありがとうございます。しかし、疑問は、Makefileを通して引数をどのように提供するかです。私はtest.RファイルでcommandArgs()を使用しています –

    +0

    私は質問を誤読していました...私は私の答えを編集しました。 –

    +0

    お返事ありがとうございました –