5

RStudio を使用していますが、特定の行でコードの実行を停止できるようにしたいと考えています。

関数は最初のスクリプト ファイルで定義され、2 番目のスクリプト ファイルから呼び出されます。

を使用して、最初のファイルを 2 番目のファイルにソースしますsource("C:/R/script1.R")

最初から行まで実行を使用しました。ここでは、関数呼び出しを含む 2 番目のスクリプトから実行を開始し、関数定義がある最初のスクリプトの行を強調表示しました。

次にbrowser()、変数を表示するために使用します。ただし、いくつかの大きな行列が含まれているため、これは理想的ではありません。これらの変数を RStudio のワークスペースに表示する方法はありますか?

また、run from line to end を使用して再起動すると、呼び出された最初のスクリプト ファイルの最後までしか実行されず、呼び出し元の関数に戻って 2 番目のファイルの実行が完了しません。

RStudio でこれらの目標を達成するにはどうすればよいですか?

OK これは簡単な例です。以下の関数 adder は 1 つのスクリプトで定義されています

adder<-function(a,b) {  
  browser()
  return(a+b)
 }

I than call is from a second script

x=adder(3,4)

adder が 2 番目のスクリプトで呼び出されると、最初のスクリプトで browser() が開始されます。ここから get("a") を使用して a の値を取得できますが、RStudio のワークスペースに a と b の値が表示されませんか?

ここの例では、実際には問題ではありませんが、いくつかの大きな行列がある場合は問題になります。

4

2 に答える 2

3

データを に割り当てると.GlobalEnv、RStudio の [ワークスペース] タブに表示されます。

> adder(3, 4)
Called from: adder(3, 4)
Browse[1]> a
[1] 3
Browse[1]> b
[1] 4
Browse[1]> assign('a', a, pos=.GlobalEnv)
Browse[1]> assign('b', b, pos=.GlobalEnv)
Browse[1]> c
[1] 7
> a
[1] 3
> b
[1] 4
于 2012-09-20T21:18:27.400 に答える
3

RStudio のワークスペースと呼ばれるものは、R セッションのグローバル環境です。各関数は、ローカル変数をグローバル環境に公開せずに、独自の小さな環境に存在します。したがってa、RStudio のオブジェクト インスペクターには存在しません。

これは、より大きなスクリプトのセクションを互いに保護し、不要な相互作用の量を減らすため、プログラミングの良い方法です。たとえば、ある関数でカウンターとして使用しても、別の関数iのカウンターの値には影響しません。i

a通常の関数のいずれかを使用して、ブラウザー セッションにいるときに調べることができます。例えば、

head(a)
str(a)
summary(a)
View(a)
attributes(a)

呼び出し後の一般的な戦術の 1 つbrowserは、現在の (親) 環境のすべての変数の概要を取得することです。でコードを停止するたびにbrowser、すぐls.str()にコマンド ラインに入力することを習慣にしてください。

于 2012-09-20T18:53:53.253 に答える