2013-08-23 5 views
3

R의 bigmemory 패키지는 어떤 종류의 R 세션을 통해 C++ 개체로 공유 될 수있는 행렬을 메모리에 저장하는 클래스 big.matrix을 제공합니다. R 언어에 대한 포인터입니다. 예를 들어빅맥의 C에서 포인터로 메모리에 액세스하기 R

:

library(bigmemory) 
> a <- as.big.matrix(matrix(0, 5, 5)) 
> a 
An object of class "big.matrix" 
Slot "address": 
<pointer: 0x24ae350> 

그때 제출할 행렬의 간단한 설명을 작성할 수 bigmemory 패키지에서 더 많은 기능을 사용하여 또 다른 R 세션을 열고, 그 새로운로부터 메모리 매트릭스 액세스 R 세션. 당신은 또한 .Call() 또는 .C()를 사용하여 C/C++ 코드를 호출 할 수 있습니다 R에서

.

내가 C 또는 C++ 중 하나에서 일부 기능을 구현하고 싶습니다

공유 메모리에이 행렬에서 실행되는 것이다 (나는 C 더 잘 알고),하지만 난 어떻게 가야하는 아무 생각이 없습니다.

알려진 크기와 함께 메모리에 주소가 주어지면 C에서 이중 [] []에 액세스 할 수 있습니까? 아니면 내가 완전히 벗어난 것인가?

답변

3

당신을 위해 운 좋게 더크 Eddelbuettel과 Romain Francois는 Rcpp이라는 멋진 도구를 작성하여 모든 노력을 다할 것입니다. 네트를 읽을 등과 함께 bigmemory를 사용하는 방법도 예제가 Rcpp Gallery

에 사용할 수있는 모든 예제 코드를 재사용 즐길 패키지를 설치 Rcpp 대답이 개선 될 수 here

+2

(로 자신을 배우고) 포인터/주소 위치 사용과 관련하여 예제/일반적인 사용 사례에 대해 좀 더 구체적으로 설명 할 수 있다면. – dardisco

+2

bigmemory를 사용하여 example에 대한 링크를 추가 했으므로, 실제로 google/Rseek Rcpp 이상의 예제가 있습니다. 주제에 대한 책도 있습니다. – statquant

+0

감사합니다. 걱정하지 않아도됩니다. 도착할 때까지 기다리고 있습니다! – dardisco

관련 문제