Я пишу документ, используя knitr, который включает в себя код C ++. Этот код должен использоваться с пакетом R TMB. Я использую документ .Rnw.
Моя основная проблема заключается в том, что я не знаю, что указать для блока кода. Я прочитал несколько вопросов о настройках в knitr для не-R языка, но я понимаю, что в knitr поддерживается только Rcpp, а не простой код C ++. Кроме того, здесь я хочу скомпилировать код C ++ через TMB. В идеальном мире мне хотелось бы, чтобы при компиляции документа knitr файлы .cpp создавались в рабочем каталоге, чтобы TMB мог получить к ним доступ позже. Однако сейчас, когда я компилирую документ knitr, я получаю следующее предупреждение:
В get_engine (параметры $ engine):
Неизвестный языковой движок 'cpp' (должен быть зарегистрирован через knit_engines $ set ()).
Вот простой пример.
\documentclass{article}
\begin{document}
<<setup, include=FALSE>>=
library(knitr)
@
<<tmbcpp, eval=FALSE, tidy=FALSE, engine='cpp'>>=
#include <TMB.hpp>
template<class Type>
Type objective_function<Type>::operator() ()
{
DATA_MATRIX(y);
PARAMETER(logitGamma); // Autocorrelation
Type nll = 0.0;
return nll;
}
@
<<compileTMB, cache=TRUE, results="hide">>=
library(TMB)
compile("tmbcpp.cpp", flags="-Wno-unused-variable")
dyn.load(dynlib("tmbcpp"))
@
\end{document}
Обратите внимание, что здесь я не оцениваю код C ++, я думал, что это обойдет проблемы, но этого недостаточно.
Любая помощь будет принята с благодарностью.