Rstudio нет автозаполнения с R cpp Armadillo? - PullRequest
1 голос
/ 04 марта 2020

Я давно использовал R cpp с Rstudio, но недавно я потерял функции автозаполнения и диагностики c.

Мне удалось отследить причину RcppArmadillow.

Вот базовый c код c ++ по умолчанию для нового файла с изменениями.

#include <Rcpp.h>
using namespace Rcpp;
// [[Rcpp::depends(RcppArmadillo)]]

// [[Rcpp::export]]
NumericVector timesTwo(NumericVector x) {
  return x * 2;
}

// [[Rcpp::export]]
double GetValueAt(const NumericMatrix& x, int row = 1, int col = 1) {
  return x(row-1,col-1);
}

/*** R
timesTwo(42)
GetValueAt(as.matrix(42),1,1)
*/

Этот код работает и выполняется правильно. // [[Rcpp::depends(RcppArmadillo)]], даже если его закомментировано необходимо, и если оно удалено или дважды прокомментировано, код завершается ошибкой при ссылке x(row-1,col-1);.

Я использую .rs.setClangDiagnostics(2) для диагностики clang, и я получаю следующую ошибку для выполнения кода:

error: OpenMP support and version of OpenMP (31, 40 or 45) was disabled in PCH file but is currently enabled

И, похоже, именно из-за этой ошибки завершение завершается неудачей.

Об этом раньше спрашивали онлайн, например, здесь: https://community.rstudio.com/t/rstudio-does-not-display-correct-c-diagnostics-libclang-error/26439, https://community.rstudio.com/t/rcpparmadillo-code-completion/41736 https://github.com/rstudio/rstudio/issues/4685

Но, похоже, ни у одного из них нет решения, которое я могу воспроизвести. Я не знаю, как я могу изменить настройки файла PCH или иным образом.

Я использую Windows 7 64 бит. R 3.5.3, Rstudio 1.2.5033, с компилятором Rtools 3.5, RcppArmadillo 0.9.850.1.0, Все недавно обновлено, кроме самого R.

Завершение кода работает только с R cpp и без Armadillo, но basi c Функциональность NumericMatrix потеряна. Я хотел бы получить какой-нибудь способ вернуть завершение, либо с помощью Armadillo, либо заставить мой код компилироваться с R cpp, а не с Armadillo. Спасибо.

...