2016-05-14 2 views
0

Я стараюсь следовать руководству в http://adv-r.had.co.nz/Rcpp.html понять Rcpp , но я всегда нужно запускать devtools::find_rtools(), прежде чем работает любая функция Rcpp: Если яЗачем мне нужно запускать find_rtools() до has_devel() = TRUE?

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 

как DevTools и Rcpp, кажется, чтобы быть счастливым. Почему это и как я могу это исправить?

Вот начало моего пути

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. Таким образом, запуск devtools::has_devel() без необходимой среды (например, действительная установка rtools) приведет к сбою. В этом случае среда просто не настроена правильно, так как переменная системы PATH не была изменена.

Убедитесь, что следующие в вашей переменной пути системы:

C:\Rtools\bin и C:\Rtools\gcc-4.6.3\bin

Проверьте в чистой R сессии:

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

Смежные вопросы