web-dev-qa-db-ja.com

実行とソースのRstudioの違い

私はRstudioを使用していますが、オプション「実行」と「ソース」の違いがわかりません。

これらの用語をグーグルで検索しようとしましたが、「ソース」は非常に一般的な単語であり、良い検索結果を得ることができませんでした:(

enter image description here

40
user2543622

Runsourceの意味は微妙に異なります。 RStudio ドキュメント によると、

選択から行を実行することとソースを呼び出すことの違いは、選択を実行する場合、すべての行がコンソールに直接挿入されるのに対して、ソースの場合、ファイルは一時的な場所に保存され、そこからコンソールに供給されることです(それにより、混乱が少なくなります)コンソール)。

知っておくべきことは、ファイル内の関数をソーシングすると、スクリプトで使用できるようになることです。これは何を意味するのでしょうか?スクリプトから呼び出される関数をトラブルシューティングしようとしていると想像してください。スクリプト内のその行がsourceになったときに使用される関数の変更を使用するには、関数を含むファイルをrunする必要があります。

これのさらなる側面は、スクリプトからsource関数を使用できることです。このコードを使用して、ディレクトリ内のすべての関数を自動的に取得します。これにより、単一のrunで長いスクリプトを簡単に実行できます。

# source our functions
code.dir <- "c:\temp"
code.files = dir(code.dir, pattern = "[.r]")
for (file in code.files){
  source(file = file.path(code.dir,file))
}
29
Andy Clifton

時々、私が理解できない理由で、コードのすべての行を選択してボタンを押すか、コードメニューに移動して「ソース」を選択したかによって、異なる動作が得られます。たとえば、特定のケースでは、すべてのコード行を選択したときにgplotをpngファイルに書き込むことはできましたが、コードメニューに移動して「ソース」を選択すると書き込みに失敗しました。ただし、「Source with Echo」を選択すると、PNGファイルに再度印刷できます。

ここでは、すべての行とコードを選択して実行し、コードメニューに移動して「ソース」を選択することと、少なくともgplotをpngファイルに印刷しようとする場合の違いを報告しています。

6

@AndyCliftonの答えの重要な意味は次のとおりです。

Rstudioブレークポイントsourceで動作(Ctrl-Shift-S)がnotrunで動作(Ctrl-Enter)

おそらく、runを使用すると、部分的な送信をサポートせずにコードが直接コンソールに渡されるためです。

ただし、runとともにbrowser()を使用できます。

コンソールへのprint()は、debugSourceと同様にrun(Ctrl-Shift-S)でサポートされています。

6
C8H10N4O2

「実行」ボタンは、選択した行を実行するだけです。 「ソース」ボタンは、アクティブなドキュメント全体を実行します。しかし、なぜそれらを試して、違いを見てみませんか?

Runはコードの各行を実行します。つまり、各行の先頭でEnterキーを押すと、出力がコンソールに出力されます。エコーでソースを指定しない限り、ソースは何も出力しません。つまり、別の投稿にあるように、ggplotはpngに出力しません。

1
Julian Zucker

RSTudioを使用すると、スクリプトセクションの実行ボタンを押すことができます。選択した行が実行されます。その横に再実行ボタンがあり、行を再度実行します。そしてその隣のソースボタンは、大量のコード全体を実行します。

このトピックに関するビデオを見つけました。

http://www.youtube.com/watch?v=5YmcEYTSN7k

0
user3771476

また、ソースファイルのソースを読み込む場合、または_Ctrl+Enter_!を使用してソースファイルの関数を環境に追加する場合、ソース関数の読み取りに使用されるエンコードも異なる場合があることを発見しました。

私の場合、関数に特殊文字(µ)を含む正規表現がありました。関数を直接インポートすると(_Ctrl+Enter_)、すべてが機能しますが、この関数を含むファイルをソースするときにエラーが発生しました。

この問題を解決するために、source関数(source("utils.R", encoding = "UTF-8"))でソースファイルのエンコードを指定しました。

0
jkd