R CPP Armadillo: Вывести целочисленное значение в функции - PullRequest
0 голосов
/ 10 июля 2020

Новое в CPP и R CPP

Я собираю пакет R с R CPP.

Вот мои шаги:

  1. Перенести в каталог с пакетом.
  2. Запустить compileAttributes (pkgdir = ".", Verbose = TRUE)
  3. Затем запустить сборку и установить из devtools.

Я хочу, чтобы одна из моих CPP функций выводила сообщение при каждом ее вызове. Итак, я добавил:

Rcpp::Rcout << "Hello World!" << std::endl;

Затем я выполнил шаги с 1 по 3 выше. Но никакой сигары. Даже сигариллы.

В идеале я хочу, чтобы он выводил целое число i, что-то вроде

Пример кода.

Rcpp::Rcout << i << std::endl;

Итак, он компилируется и функция запускается - но нет распечатки дорогой переменной. ПОМОГИТЕ! Пример моей функции ниже. Я подозреваю, что есть какой-то стандартный способ передать значения в R или просто распечатать из CPP.

    # include <RcppArmadillo.h>
    // [[Rcpp::depends(RcppArmadillo)]]
    // [[Rcpp::plugins(cpp11)]]

    using namespace Rcpp ;
    arma::mat sillyme (arma::mat FE) {
  
    arma::mat FEE = FE ;
    Rcpp::Rcout << "Hello World!" << std::endl;
    Rcpp::Rcout << FE.n_rows << std::endl;

    return(FEE) ;
    }

1 Ответ

2 голосов
/ 10 июля 2020

В моей системе (Ubuntu 20.04, R 4.0.0) это работает так, как ожидалось (после добавления атрибута // [[Rcpp::export]], чтобы убедиться, что функция вызывается из R):

sillyme(diag(2))
# Hello World!
# 2
#      [,1] [,2]
# [1,]    1    0
# [2,]    0    1
...