2017-07-26 36 views
1

の内側に、32ビットのR内の引数とRの機能を実行する私はは、64ビットのR

test.function <- function(arg1){ 
        print(arg1) 
       } 

は、どのように私が言うことができます、実行できる機能を実行したいとします

32ビットモードで
test.function("Hello world") 

、64ビットR?私は

system(paste0(Sys.getenv("R_HOME"), "/bin/i386/Rscript.exe ",'"some_script.R"')) 

を使用して32ビットモードで全体のスクリプトを実行し管理している。しかし、それは全体ではなく、スクリプトの引数を持つ関数を実行できるように、どのように私は、これを変更することができますか?

EDIT

ローマLuštrikによって答えに従い、

system('Rscript test.script.R "hello"') 

実行すると、私は次のエラーを与える:

Error in winDialog(type = "ok", message = message_text) : winDialog() cannot be used non-interactively call: -> check.for.updates.R -> winDialog Running stopped

Warning message: running command 'Rscript test.script.R "hello"' had status 1

(エラーメッセージは私の母国語であったので、私が持っていましたいくつかの単語を翻訳するため、他のシステムではテキストが多少異なる場合があります)

+0

この行を関数に挿入できますか? – AK47

+0

スクリプトを実行しているよりも、実行可能かもしれませんが、私はスクリプトを実行しているよりもずっと来ているので、どのようにすればいいのか分かりません。 – Acarbalacar

+0

あなたの編集は新しい質問であるようです。いずれの場合でも、非対話的に使用されないように意図されている機能をおそらく使用しています。 –

答えて

0

私は自分自身で解決策を見つけることができました。RomanLuštrikの解決策です。

彼の例に続いて、我々はtest_script.Rと呼ばれるスクリプトがあります。

pathIn32BitRScript <- '"C:/Some path/test_script.R"' 
system(paste0(Sys.getenv("R_HOME"), "/bin/i386/Rscript.exe", pathIn32BitRScript, " ", "Hello world")) 
load("Data.Rda") # Loads the results into an object called mydata 
invisible(file.remove("Data.Rda")) # Deletes the file we created 

args <- commandArgs(trailingOnly = TRUE) 

test.function <- function(x) { 
    print(x) 
} 

args.run <- list(x = args) 
mydata <- do.call(test.function, args = args.run) 
save(mydata, file = "Data.Rda") # If you need the output to an R object 

を次に64ビットRを実行する別のスクリプトでは、我々はによって32ビットのRでこの機能を実行することができますこの例ではx = "Hello World"です。パスにスペースがある場合は、この例のように二重引用符が必要です。

1

特定の機能のみを実行することはできません。スクリプトを作成する必要があります。しかし、これで1機能のみのスクリプトを作成することはできません。

test.script.Rという名前のスクリプトを作成し、見つけやすい場所に置いてください。

args <- commandArgs(trailingOnly = TRUE) 

str(args) 

test.function <- function(x) { 
    message("Your input:") 
    message(x) 
} 

invisible(sapply(args, test.function)) 

端末ウィンドウを開きます。 Windowsのcmd.exeを使用することができます(Windowsキーを押し、cmd.exeまたはCommand Promptなど)。スクリプトがある場所に移動し、以下のコマンドを使用してスクリプトを実行します。

$ Rscript test.script.R "hello" "hello" "won't you tell me your name" "i hate the doors" 
chr [1:4] "hello" "hello" "won't you tell me your name" ... 
Your input: 
hello 
Your input: 
hello 
Your input: 
won't you tell me your name 
Your input: 
i hate the doors 

それとも、あなたはR.

system('Rscript test.script.R "hello" "hello" "won't you tell me your name" "i hate the doors"') 

て同じことを行うためにsystemを使用することができ、私は単一引用符と二重引用符を使用する方法に注目してください。単一引用符は外側にあります。この呼び出しは、スクリプトが現在Rが探している作業領域にあるとも仮定します。あなたはsetwd()を使ってそれを変更できます。

+0

このスクリプトを実行しているとき、正確に何をしていますか?私はあなたが直接実行したいと思う一つの機能を実行する@Acarbalacar – Acarbalacar

+0

もWindows 10を使用していることを言及する必要があります。スクリプトは、引数をキャッチし、潜在的な前処理を行い、引き数を関数に渡すだけのラッパーです。上記のスクリプトは、Windowsマシンで実行されましたが、現在はRStudioに組み込まれている 'cygwin'端末を通して実行されます。 –

+0

これは全く新しい世界です。私はRstudioを使っていますが、Cygwinでの経験はありません。あなたの回答を編集して、これを行うためのステップバイステップガイドを提供するか、またはそのようなガイドを提供するソースへのリンクを提供できますか? – Acarbalacar

関連する問題