Как я могу импортировать вектор в r cpp? - PullRequest
0 голосов
/ 19 февраля 2020

Добрый день,

Я создал эту r cpp функцию , которая возвращает 3d матрицу с измерениями K * K * L .

R cpp Код:

#include <Rcpp.h>
using namespace Rcpp;   

// [[Rcpp::export]]

NumericVector Test( int K , int L ){

  // calling some R functions 

  Function f1("rnorm"); 
  Function f2("runif"); 
  Function f3("ceiling"); 
  Function f4("unique"); 
  Function f5("array"); 
  Function f6("unique.array"); 
  Function f7("print");

  // Creating a vector of normal law with length= K * K * L

  NumericVector rn = f5(f1(K*K*L, Named("sd")=1, _["mean"]=0), Named("dim")=NumericVector::create(K,K,L));

  // Reshaping the 1d vector  , the 3d matrix will be visible in R 
  rn.attr("dim") = Dimension(K, K , L ); 
      return rn ;
    }

***Example of the obtained results :***  The function is called in Rstudio

    > Test(3,2)
    , , 1

            [,1]       [,2]        [,3]
[1,] -0.57144807 -0.1650806  0.07607133
[2,]  0.61278268 -0.5049861  0.37705107
[3,]  0.09037529  1.6185765 -0.68675536

, , 2

           [,1]       [,2]       [,3]
[1,] -0.5789173 -0.6630934  0.9961613
[2,] -0.4425025 -0.9083358 -1.4860523
[3,]  0.2150056 -0.3229108 -1.6536952

Мой вопрос:

  • Предположим, что (K, L) = (3,2), как в примере, как я могу извлечь в r cpp вторая строка / столбец во второй таблице rn (индексируется [,, 2])?

  • Можно ли сохранить этот извлеченный вектор длины = K в переменной numericVector с использованием метода vector.import () ?

Извините, но я не нашел пример, который мог бы мне помочь !

Большое спасибо!

1 Ответ

0 голосов
/ 20 февраля 2020

Возможное решение может быть:

NumericVector v1 ; 
NumericVector v2=NumericVector::create(1,2,4,5,6,7,8) ; 
v1= rd.import( v2.begin() , v2.begin()+ 6) ; 
// return elements 1,2,4,5,6,7
...