Rcpp:将编译后的函数另存为Robj

Rcpp:将编译后的函数另存为Robj,r,compilation,rcpp,R,Compilation,Rcpp,如果我在R中定义了一个函数,我可以使用save函数保存函数对象。然后我可以使用load函数加载函数对象并直接使用它。但是,如果我有一个rcpp函数,并且如果我试图保存编译后的版本并将其加载回内存,我就不能再直接使用该函数对象。这可能吗?我之所以问这个问题,是因为编译这个函数需要一段时间,如果每次我启动一个R环境时都能找到一种方法来避免这种开销,那就太好了。谢谢 否,通常不能序列化(并保存)使用cxfunction()或sourceCpp()编译的函数。您需要重新编译它,除非您将它放在一个包中。这

如果我在R中定义了一个函数,我可以使用save函数保存函数对象。然后我可以使用load函数加载函数对象并直接使用它。但是,如果我有一个rcpp函数,并且如果我试图保存编译后的版本并将其加载回内存,我就不能再直接使用该函数对象。这可能吗?我之所以问这个问题,是因为编译这个函数需要一段时间,如果每次我启动一个R环境时都能找到一种方法来避免这种开销,那就太好了。谢谢

否,通常不能序列化(并保存)使用
cxfunction()
sourceCpp()编译的函数。您需要重新编译它,除非您将它放在一个包中。这就是为什么除了快速试验外,软件包是真正安装编译代码的好方法。

。你可以选择“接受”这个答案,选择提问者看到的只有你自己的记号。嗨,德克,你能告诉我你将如何把它放在一个包裹里吗?我有一个已经编译好的函数(如SoeCeCpp返回的),我想在以后不重新编译…………我想你的意思是把C++代码放在包中使用RCPP?我正在寻找替代方案,因为我的用例是我有一个包a,其中有一个函数a::factory(),它返回一个在rcpp中定义的函数,我希望在这个包之外(或在另一个包中)使用这些函数。是否有任何技巧来实现这一点?例如,我不能重用示例吗?所以在我的另一个代码/包中使用Dyn.Load(Simult.so)的文件?请考虑停止滥用八岁(?)问题的注释部分。这个主题在这里和rcpp-devel列表上已经讨论过很多次了(这个列表也对您开放,所以也许可以注册并发布在那里),所以我建议您相信R-Core,编译代码的最佳可移植方式实际上是一个包。使用Rcpp的代码也不例外。对于R来说,它只是“目标代码”,而你(通常)不能像文本文件一样将其抛来抛去。