bigmemory
пакет в R обеспечивает класс, 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-сеанса.
От R
Вы также можете позвонить C
/C++
код с использованием .Call()
или же .C()
,
Я хотел бы реализовать некоторые функции в любом C
или же C++
(Я более знаком с C
), который будет работать на этой матрице в общей памяти, но я понятия не имею, как это сделать.
Учитывая адрес в памяти, наряду с известными размерами я могу получить двойной [] [] в C
? или я совсем не в курсе?
Окей, удачи вам, Дирк Эддельбюттель и Ромен Франсуа написали потрясающий инструмент под названием Rcpp это сделает всю (очень) тяжелую работу за вас.
Установите пакет, прочтите виньетки и наслаждайтесь повторным использованием всех примеров кода, доступных на Галерея RCPP
Есть даже пример того, как использовать bigmemory
в сочетании с Rcpp
Вот
Других решений пока нет …