0

ファイルを作成するように、.Rファイルを書き出すか、R scriptfromを作成したい。しかし、通常、ファイルを書き出すとき、ファイルにはいくつかが含まれていますが、それには含まれていません。だから私はRコマンドを使ってから書きたいと思っています。R console.txt.txtoutputcommandsR scriptconsolesave

Rにwrite.Rこのようなものがあるかどうかはわかりません。コマンドを使ってみsink()ましたが、やはりoutputs the output and not commands.

 sink("Rscriptfrom_Console.R")
 sapply(iris,class)
 sink()

を作成しR script file (.R) from R console using R commandsます。

どんな助けでも大歓迎です。ありがとう!

4

2 に答える 2

1

私自身の質問に答えます。より良い答えがあれば投稿してください。ここfile()writeLines()関数を使用しsource()て、書き込まれた.Rファイルが機能しているかどうかを確認します。

  fc <- file("out.R")

  writeLines(c("print(head(iris))",
  "print(summary(iris))"),
  fc)

  close(fc)

  source("out.R")
  #   Sepal.Length Sepal.Width Petal.Length Petal.Width Species
  # 1          5.1         3.5          1.4         0.2  setosa
  # 2          4.9         3.0          1.4         0.2  setosa
  # 3          4.7         3.2          1.3         0.2  setosa
  # 4          4.6         3.1          1.5         0.2  setosa
  # 5          5.0         3.6          1.4         0.2  setosa
  # 6          5.4         3.9          1.7         0.4  setosa

  #   Sepal.Length    Sepal.Width     Petal.Length    Petal.Width   
  #  Min.   :4.300   Min.   :2.000   Min.   :1.000   Min.   :0.100  
  #  1st Qu.:5.100   1st Qu.:2.800   1st Qu.:1.600   1st Qu.:0.300  
  #  Median :5.800   Median :3.000   Median :4.350   Median :1.300  
  #  Mean   :5.843   Mean   :3.057   Mean   :3.758   Mean   :1.199  
  #  3rd Qu.:6.400   3rd Qu.:3.300   3rd Qu.:5.100   3rd Qu.:1.800  
  #  Max.   :7.900   Max.   :4.400   Max.   :6.900   Max.   :2.500  

  #        Species  
  #  setosa    :50  
  #  versicolor:50  
  #  virginica :50  
于 2016-10-13T11:57:13.663 に答える
0

何をするのか誤解しているようです。出力sinkをキャプチャしてファイルに書き込みます。あなたがやりたいことである未評価のR式をキャプチャしません。

未評価の R 式をキャプチャするには、それを でラップするquoteか、同様のメカニズムを使用する必要があります。あなたの例を使用するには:

quoted_expr = quote(sapply(iris, class))

quoted_exprR 式が含まれるようになりました。次に、R コードの文字列表現に変換する必要があります。

code_representation = deparse(quoted_expr, backtick = TRUE)

ここbacktick = TRUEでは厳密には必要ありませんが、必要な場合があるため、常に使用することをお勧めします。

最後に、このコード表現をファイルに書き込むことができます。

writeLines(code_representation, 'code.r')

ここで、上記の例では、固定された R 式をファイルに書き込みました。全体を通して文字列を使用することもできます。しかし、文字列の代わりに引用符で囲まれた式を使用すると、その場でコードを変更でき、文字列をいじる必要がなくなります (エラーが発生しやすく、非効率的です)。たとえば、どの data.table で作業するかをユーザーに決定させることができます。

dataset_name = 'mtcars' # Modify to your heart’s content
quoted_expr = substitute(sapply(dataset, class),
                         list(dataset = as.name(dataset_name)))

# `quoted_expr` is now:
sapply(mtcars, class)

…など

于 2016-10-13T12:07:37.603 に答える