Да, вы можете.Но это "сложно".
Вы вступаете в тему, называемую двоичной сериализацией.Есть много работы там.По сути, вы находитесь где-то в континууме между
минимальным: откройте файл, запишите N двоичных элементов;затем с другой стороны прочитайте N двоичных файлов.Мы делали нечто подобное на работе несколько лет назад, когда записали некоторые метаданные с <rows,cols,version>
, а затем двоичный двоичный объект rows * cols
double, чтобы прикрепить к матрице
maximal: использовать полностью описательную метаданныеязык, такой как Protocol Buffer или MessagePack, чтобы описать двоичный контент, написать его на C ++ (используя соответствующую библиотеку) и прочитать обратно в R (используя соответствующие пакеты - я связан с каждым из них: RProtoBuf и RcppMsgPack).
И многое другое.Если вам действительно нужно только обмениваться данными между C (++) и R, вы можете попробовать формат RData / rds.Есть одна библиотека: librdata , и я экспериментировал с ней (и подал несколько отчетов об ошибках и сделал несколько запросов на извлечение).Я мог бы начать там.
Короче говоря: проведите некоторое исследование, выясните, что делать, а затем сделайте это:)
PS Если вы вызываете C ++ через Rcpp из R, тогда вам могут не понадобиться файлы.Мы можем передавать большие объекты туда и обратно - ограничение может быть вашей оперативной памятью.