Rcpp : 행렬을 벡터로 변환

귀 기후

일반적으로 2 차원 행렬을 Rcpp에서 R의 벡터로 변환하고 싶습니다. "as (m)"을 사용하여 매우 간단해야합니다. 그러나 여전히 R에서 행렬을 얻습니다. 이유가 궁금합니다. Rcpp에서 attr을 수동으로 제거해야합니까?

#include <Rcpp.h>
#include <string>
using namespace Rcpp;
// [[Rcpp::export]]
NumericVector matrix2vector(NumericMatrix m, const bool byrow=false){
  NumericVector x;
  if(byrow){
    Rcout<< "warning: default by column\n";
    m = transpose(m);
    x = as<NumericVector>(m);
  }else{
    x = as<NumericVector>(m);
  }
  return(x);
}

/*** R
m=matrix(1:15,5,3)
matrix2vector(m,byrow=T)
*/

더크 에델 뷔텔

질문이나 시도한 답변을 이해했는지 잘 모르겠습니다. 여기에서 여전히 행렬을 반환하고 있습니다. 그리고 Rcpp는 모양 변경 및 고급 매트릭스 작업을 제한적으로 지원합니다.

코드의 약간 단순화 된 버전 :

암호
#include <Rcpp.h>
using namespace Rcpp;
// [[Rcpp::export]]
NumericVector matrix2vector(NumericMatrix m, const bool byrow=false){
  if (byrow){
    Rcout << "warning: default by column\n";
    m = transpose(m);
  }
  return NumericVector(m);
}

/*** R
m <- matrix(1:15,5,3)
print(matrix2vector(m, byrow = TRUE))
print(matrix2vector(m, byrow = FALSE))
*/
산출
R> Rcpp::sourceCpp("~/git/stackoverflow/61036707/question.cpp")

R> m <- matrix(1:15,5,3)

R> print(matrix2vector(m, byrow = TRUE))
warning: default by column
     [,1] [,2] [,3] [,4] [,5]
[1,]    1    2    3    4    5
[2,]    6    7    8    9   10
[3,]   11   12   13   14   15

R> print(matrix2vector(m, byrow = FALSE))
     [,1] [,2] [,3]
[1,]    1    6   11
[2,]    2    7   12
[3,]    3    8   13
[4,]    4    9   14
[5,]    5   10   15
R> 

여기서 실행하는 것은 실제로 전치입니다.

나는 RcppArmadillo 시도 할 것입니다 않습니다 명시해야 rowvec하고 colvec후자의 존재가 별명으로, 유형 vec. "열별 ​​행"요소를 열별 행 벡터로 재구성하는 측면에서 제안하는 내용을 확인해야합니다.

편집 : 실제로 RcppArmadillo에서 (너무 자주) 더 쉽습니다.

암호
#include <RcppArmadillo.h>

// [[Rcpp::depends(RcppArmadillo)]]

// [[Rcpp::export]]
arma::mat matrix2vector(arma::mat m, const bool byrow=false){
  if (byrow) {
    return m.as_row();
  } else {
    return m.as_col();
  }
}

/*** R
m <- matrix(1:15,5,3)
print(matrix2vector(m, byrow = TRUE))
print(matrix2vector(m, byrow = FALSE))
*/
산출
R> Rcpp::sourceCpp("~/git/stackoverflow/61036707/answer.cpp")

R> m <- matrix(1:15,5,3)

R> print(matrix2vector(m, byrow = TRUE))
     [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10] [,11] [,12] [,13] [,14] [,15]
[1,]    1    6   11    2    7   12    3    8   13     4     9    14     5    10    15

R> print(matrix2vector(m, byrow = FALSE))
      [,1]
 [1,]    1
 [2,]    2
 [3,]    3
 [4,]    4
 [5,]    5
 [6,]    6
 [7,]    7
 [8,]    8
 [9,]    9
[10,]   10
[11,]   11
[12,]   12
[13,]   13
[14,]   14
[15,]   15
R> 

내가 사용하고 있음을 참고 arma::mat하거나하지 충돌에 대한 반환 형식으로 colvec또는 rowvec. 둘 중 하나를 선택할 수 있지만 답을 반환 할 수 없습니다 .

편집 2 : 그리고 아래 주석에 따라 : 콘텐츠의 모양을 바꾸고 싶다면 이미 Rcpp가 필요하지 않습니다. dim속성을 핵무기하십시오 . R (및 원하는 경우 C ++) 수준에서 작동합니다.

R> m
     [,1] [,2] [,3]
[1,]    1    6   11
[2,]    2    7   12
[3,]    3    8   13
[4,]    4    9   14
[5,]    5   10   15
R> dim(m)
[1] 5 3
R> dim(m) <- NULL
R> m
 [1]  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15
R> 

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

Rcpp : 행렬을 벡터로 변환

분류에서Dev

Julia-행렬을 벡터로 변환

분류에서Dev

벡터를 삼각 행렬로 변환

분류에서Dev

행렬을 벡터로 변환하고 결합하는 numpy

분류에서Dev

대각선 희소 행렬을 1 차원 벡터로 변환

분류에서Dev

R의 행렬을 벡터로 변환하는 방법

분류에서Dev

하부 삼각 행렬을 벡터로 변환 [JULIA]

분류에서Dev

행렬 곱셈 : 벡터를 행렬로 변환

분류에서Dev

R-행렬을 아래쪽과 행에서 벡터로 변환

분류에서Dev

셀을 행렬로 변환

분류에서Dev

행렬을 열로 변환

분류에서Dev

열 벡터에서 행렬로 데이터 변환

분류에서Dev

Rcpp와 C ++ 사이의 벡터 변환 (Rcpp :: as 또는 Rcpp :: wrap 사용)은 새로운 벡터를 생성하고 요소를 복사합니까?

분류에서Dev

벡터의 벡터를 행렬로 변환하기 위해 방송 Julia 사용

분류에서Dev

벡터를 쌍 순열의 행렬로 변환

분류에서Dev

MATLAB : 벡터를 논리 행렬로 루프없는 변환

분류에서Dev

길이가 다른 벡터를 R에서 행렬로 변환

분류에서Dev

큐 비트 밀도 행렬에서 Bloch 벡터로 변환

분류에서Dev

적용시 행렬에서 벡터로 변환 된 출력

분류에서Dev

목록 열을 벡터 열로 변환

분류에서Dev

배열을 벡터로 변환

분류에서Dev

Spark : DataFrame 열을 벡터로 변환

분류에서Dev

행렬을 벡터로 반환하는 방법

분류에서Dev

줄리아 : 행 벡터를 열 벡터로 변환

분류에서Dev

Clojure에서 벡터 맵을 열 벡터로 변환

분류에서Dev

이항 벡터로 구성된 행렬을 연속적인 0의 범위로 변환

분류에서Dev

R에서 행렬을 벡터로 변환하는 '적용'을 중지 하시겠습니까?

분류에서Dev

data.table을 벡터 행으로 변환

분류에서Dev

행렬을 R의 누적 행 평균 행렬로 변환

Related 관련 기사

  1. 1

    Rcpp : 행렬을 벡터로 변환

  2. 2

    Julia-행렬을 벡터로 변환

  3. 3

    벡터를 삼각 행렬로 변환

  4. 4

    행렬을 벡터로 변환하고 결합하는 numpy

  5. 5

    대각선 희소 행렬을 1 차원 벡터로 변환

  6. 6

    R의 행렬을 벡터로 변환하는 방법

  7. 7

    하부 삼각 행렬을 벡터로 변환 [JULIA]

  8. 8

    행렬 곱셈 : 벡터를 행렬로 변환

  9. 9

    R-행렬을 아래쪽과 행에서 벡터로 변환

  10. 10

    셀을 행렬로 변환

  11. 11

    행렬을 열로 변환

  12. 12

    열 벡터에서 행렬로 데이터 변환

  13. 13

    Rcpp와 C ++ 사이의 벡터 변환 (Rcpp :: as 또는 Rcpp :: wrap 사용)은 새로운 벡터를 생성하고 요소를 복사합니까?

  14. 14

    벡터의 벡터를 행렬로 변환하기 위해 방송 Julia 사용

  15. 15

    벡터를 쌍 순열의 행렬로 변환

  16. 16

    MATLAB : 벡터를 논리 행렬로 루프없는 변환

  17. 17

    길이가 다른 벡터를 R에서 행렬로 변환

  18. 18

    큐 비트 밀도 행렬에서 Bloch 벡터로 변환

  19. 19

    적용시 행렬에서 벡터로 변환 된 출력

  20. 20

    목록 열을 벡터 열로 변환

  21. 21

    배열을 벡터로 변환

  22. 22

    Spark : DataFrame 열을 벡터로 변환

  23. 23

    행렬을 벡터로 반환하는 방법

  24. 24

    줄리아 : 행 벡터를 열 벡터로 변환

  25. 25

    Clojure에서 벡터 맵을 열 벡터로 변환

  26. 26

    이항 벡터로 구성된 행렬을 연속적인 0의 범위로 변환

  27. 27

    R에서 행렬을 벡터로 변환하는 '적용'을 중지 하시겠습니까?

  28. 28

    data.table을 벡터 행으로 변환

  29. 29

    행렬을 R의 누적 행 평균 행렬로 변환

뜨겁다태그

보관