데이터 프레임을 매트릭스로 변환하는 가장 효율적인 방법 및 그 반대의 경우
문제
데이터 프레임 및 매트릭스에 대한 RCPP 분할과 같은 기본 R 기능을 구현하려고 노력했습니다.이를 위해 데이터 프레임과 매트릭스를 앞뒤로 변환하는 가장 효율적인 방법을 알아야합니다.지금까지 DataFrame 생성자를 사용하여 매트릭스를 DataFrame으로 변환합니다.어떻게 데이터 프레임을 다시 matrix.let로 변환 할 수 있습니까? 모든 데이터는 두 번 유형의 데이터임을 가정합니다.
현재 접근법은
입니다.DataFrame 님의 매트릭스
NumericMatrix x;
DataFrame y= DataFrame(x);
y.attr("names")=x.attr("names");
.
DataFrame to matrix
DataFrame x;
int xsize=x.size();
NumericVector col=x(0);
NumericMatrix y(col.size(),xsize);
for(int i=0;i<xsize;i++){
y(_,i)=col;
if(i<xsize-1){
col=x(i+1);
}
}
y.attr("names")=x.attr("names");
.
이 변환을하는 것이 더 효율적인 방법이 있습니까?
나는 또한 rcpp의 초보자입니다.누구나 특정 클래스 구현의 소스 코드를 찾는 방법을 설명 할 수 있습니까? 예 : NumericMatrix 예 :
또한 마지막 줄
y.attr("names")=x.attr("names")
.
x의 열 이름을 y의 열 이름으로 설정하지 않습니다.누구나 데이터 프레임의 열 이름으로 열 이름을 설정하는 방법을 설명 할 수 있습니까?
해결책
nrow
의 DataFrame
메소드가 누락되었습니다.이것은 코드를 단순화 할 수 있습니다.첫 번째 열에 특별한 케이싱이 필요하지 않습니다.
int xsize=x.size();
NumericMatrix y(x.nrows(),xsize);
for(int i=0;i<xsize;i++){
y(_,i) = NumericVector(x[i]);
}
.
열 이름을 설정하는 것과 같이 dimnames
속성을 거칩니다.
y.attr("dimnames") = List::create( R_NilValue, x.attr("names") ) ;
.
Matrix
의 소스 코드는 여기 그러나 나는 이것이 당신을 도울 것임을 확신하지 못한다.
제휴하지 않습니다 StackOverflow