2016-05-14 10 views
0

私はRcpp を理解するためにhttp://adv-r.had.co.nz/Rcpp.htmlでガイドに従うことを試みるが、どのRcpp機能が動作する前に、私はいつもdevtools::find_rtools()を実行する必要があります。 私はなぜhas_devel()= TRUEより前にfind_rtools()を実行する必要がありますか?

library(devtools) 
library(Rcpp) 

has_devel() # Error: Command failed(1) 

# Example from http://adv-r.had.co.nz/Rcpp.html 
add <- cppFunction('int add(int x, int y, int z) { 
    int sum = x + y + z; 
    return sum; 
}') 

をすれば、私はエラーを取得し、Rstudioが追加ビルドをインストールするために私を促しツール(ただし、私が「はい」と言うと何も起こらない)。いくつかのmakeコマンドが失敗するようですが、system("where make")は私のPATHにあるパスを与えます。私はその後、

find_rtools() # True 

has_devel() # True 

# Try the example again 
add <- cppFunction('int add(int x, int y, int z) { 
    int sum = x + y + z; 
    return sum; 
}') 
# Now works 
add(1,2,3) # 6 

両方のデベロッパーツールとRcppが幸せであるように見えるん 。それはなぜですか、どうすれば修正できるのですか?ここで

は私のPATHの先頭には、

path <- get_path() 
head(path, 8) 

[1] "F:\\Software\\R-3.3.0\\bin\\x64" 
"F:\\Software\\Rtools\\bin"      
[3] "F:\\Software\\Rtools\\gcc-4.6.3\\bin" 
"F:\\Software\\Python 3\\Scripts\\"    
[5] "F:\\Software\\Python 3\\" 
"F:\\Software\\Rtools\\bin"      
[7] "F:\\Software\\Rtools\\gcc-4.6.3\\bin" 
"C:\\Program Files (x86)\\Intel\\iCLS Client\\" 
+0

がきれいRセッションからそのパスますか? 'find_rtools()'は、そのセッションのパスのみを変更します。これをdevtoolsを実行することなく永続的に動作させたい場合は、環境変数ダイアログ(Windowsの[スタート]メニュー)でパスを変更してください。 – Thomas

+0

はい、クリーンセッションからのものです。 しかし、どのディレクトリがパスにないのか、Rtoolsには少なくともいくつかのディレクトリがあるようです。 – luoar

答えて

2

基本的に、あなたはrtoolsシステムPATH変数に場所をインストール置かなかったです。したがって、devtools::find_rtools()scanning the registry and adding itです。この追加は、アクティブなセッションに対してのみ有効です。

今、devtools::has_devel()very simple build and link of a C++ fileです。したがって、必要な環境(例えば、有効なrtoolsインストール)を使わずにdevtools::has_devel()を実行すると、エラーが発生します。この場合、環境変数が変更されていないため、環境は正しくセットアップされません。PATH

システムパス変数であり、次のことを確認してください:

C:\Rtools\binとクリーンRセッション内C:\Rtools\gcc-4.6.3\bin

チェック:

Sys.getenv("PATH") 
+0

私はそれを調べるときにパス内に 'F:\\ Software \\ Rtools \\ bin'と' F:\\ Software \\ Rtools \\ gcc-4.6.3 \\ bin'を持っていますRはあなたに教えてくれたので、Windowsの設定でも表示されます。 Rtoolsを 'C:\'に置かないと問題はありますか? – luoar

+0

'Rtools'をアンインストールし、以前のインストールから' PATH'変数を削除し、古いRインストールを削除することをお勧めします。[新しいコピーをダウンロードする](https://cran.r-project.org/bin/ Windows/Rtools/Rtools33.exe)、[インストール](https://www.biostat.wisc.edu/~kbroman/Rintro/Rwinpack.html)をクリックします。 – coatless

+0

また、参照してください:http://stackoverflow.com/questions/19885381/rtools-not-being-detected-by-r – coatless

関連する問題