web-dev-qa-db-ja.com

Rstudio内でRを再起動します

私はsystem2()を使用してR内から簡単なpythonスクリプトを呼び出しようとしています。仕事。

大きなデータセットをロードし、その中の情報を使用してsystem2()に渡す引数として使用する場合、Rstudioの呼び出しで「Rの再起動」を手動でクリックした場合にのみ機能します。

私が欲しいもの:

df <- read.csv('some_large_file.csv')
###extracting some info called 'args_vec'
for(arg in args_vec){
    system2('python', args)
}

これはそのままでは機能しません。 forループは単に渡されます。

必要なもの:

df <- read.csv('some_large_file.csv')
###extracting some info called 'args_vec'
###something that 'restarts' R
for(arg in args_vec){
    system2('python', args)
}

この答え は、私が望むものをまったく得られません。つまり、Rstudio内では機能せず、「システム」と呼ばれます(この場合、「システム2」と同じ問題が発生します)。実際、上記の回答をRprofile.siteファイルに入れると、すぐにrstudioが閉じられました。

私は提案を通常の関数として試しました(「makeActiveBinding」を使用するのではなく、まったく機能しませんでした)。

##restart R in r session  -- doesn't work
makeActiveBinding("refresh", function() { system("R --save"); q("no") }, .GlobalEnv)

##nor did this:
refresh <- function() { system("R --save"); q("no") }

上記の2つのオプションの多くのバリエーションを試しましたが、これは単純な質問のように思えるまで長くなります。起動プロセスについてはまだ理解していないことがたくさんありますが、「makeActiveBinding」は少し神秘的です。誰かが私を正しい方向に向けることができますか?

35
Ben Hunter

Rstudioでは、次の方法でRセッションを再開できます。

command/ctrl + shift + F10 

以下も使用できます。

.rs.restartR()
59
mgoldwasser

RStudioには、文書化されていないrs.restartR()があります。

ただし、ロードされたパッケージをアンロードしたり、環境をクリーンアップしたりすることはありません。そのため、Rを再起動するかどうかについて疑問があります。

9
Arthur

Forループではなく、apply関数内に関数呼び出しを埋め込みましたか?

Forループを適用して完全に実行すると、システムでメモリが不足するコードがいくつかありました。それは役立つかもしれませんか?

0
Nathan Hatch