Às 13:38 de 17/12/2022, Christofer Bogaso escreveu:
Hi,

Below is the position of Rcout and underlying C++ function

#ifdef _OPENMP
#include <omp.h>
#endif
// [[Rcpp::depends(RcppProgress)]]
#include <progress.hpp>
#include "cpploss.h"
#include <Rcpp.h>
#include <Rmath.h>
#include <iostream>

using namespace Rcpp;

// [[Rcpp::export]]
SEXP  GCPM_cpploss(SEXP default_distr_a,SEXP link_function_a, SEXP
S_a,SEXP Sigma_a, SEXP W_a, SEXP PD_a, SEXP PL_a, SEXP calc_rc_a, SEXP
loss_thr_a, SEXP max_entries_a){
   Rcpp::Rcout << "Some Value" << std::endl << 1.23 << std::endl;
   NumericMatrix S(S_a), W(W_a),Sigma(Sigma_a);
   NumericVector PD(PD_a),
PL(PL_a),max_entries(max_entries_a),default_distr(default_distr_a),link_function(link_function_a),calc_rc(calc_rc_a),loss_thr(loss_thr_a);
   List ret;

etc

This still does not print in the console.

Not sure if I am missing something.

Thanks and regards,

On Sat, Dec 17, 2022 at 6:57 PM Rui Barradas <ruipbarra...@sapo.pt> wrote:

Às 11:05 de 17/12/2022, Christofer Bogaso escreveu:
Hi Rui,

Unfortunately, the code Rcpp::Rcout << "---------->>>>>.My values" <<
"\n"; still not printing the value.

Regarding your second suggestion, R_Print("My values\n"); - where
should I put this statement?

On Sat, Dec 17, 2022 at 11:39 AM Rui Barradas <ruipbarra...@sapo.pt> wrote:

Às 23:32 de 16/12/2022, Christofer Bogaso escreveu:
Hi,

I am using an R package where there are some C++ code.

To check some intermediate values generated by that C++ code, I added
a line like

std::cout << "My values";

Now with this modification, I next build a modified package (source) using

R CMD build

Next I install this modified package using install.packages() function

However during the run-time of the C++ code with above modification, I
dont get any print with "My values"

Can you please help to understand why am not getting that printed?

______________________________________________
R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.

Hello,

If the package uses Rcpp try instead


Rcpp::Rcout << "My values" << "\n";   // or std::endl


More generally, there is also


R_Print("My values\n");



Hope this helps,

Rui Barradas





Hello,

Put R_Print where your cout is and instead of it.

As for Rcpp::Rcout, instead of "\n" try ending the line with std::endl
to immediately flush the buffer.

Hope this helps,

Rui Barradas


Hello,

1. Forget R_print, it is meant for C code, not for Rcpp.
Besides, it is also an error of mine, I was thinking about Rprintf, see below.

2. The following works as expected.
   It's the first example in

vignette("Rcpp-introduction", package = "Rcpp")

   with the if/Rcout and Rprintf instructions added.



File: convolve_rcpp.cpp



#include "Rcpp.h"

using namespace Rcpp;
// [[Rcpp::export]]
NumericVector convolve_cpp(const NumericVector& a, const NumericVector& b) {
  // Declare loop counters, and vector sizes
  int i, j,
        na = a.size(), nb = b.size(),
        nab = na + nb - 1;
        // Create vector filled with 0
        NumericVector ab(nab);
        // Crux of the algorithm
        for(i = 0; i < na; i++) {
                // this works as expected, it prints to the console
                // printing is on every 10 times through the loop
                if(i % 10 == 0)  {
                        Rcpp::Rcout << "Some Value " << i << "\n";
                        Rcpp::Rcout << "     Value " << a[i] << std::endl;
                }
                for(j = 0; j < nb; j++) {
                        ab[i + j] += a[i] * b[j];
                }
        }
        Rprintf("Done\n");
        // Return result
        return ab;
}



Then run the R script


path <- "~/path/to/Rcpp/code"
fl <- list.files(path, pattern = "convolve\\.cpp")
fl <- file.path(path, fl)

Rcpp::sourceCpp(fl)

x <- 1:1e4
y <- 10:1

z <- convolve_cpp(x, y)
str(z)
# num [1:10009] 10 29 56 90 130 175 224 276 330 385 ...


Hope this helps,

Rui Barradas

______________________________________________
R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.

Reply via email to