假设我使用f1
编译了包含两个函数f2
和Rcpp::sourceCpp('myPath/myCode.cpp')
的代码,并找到了创建的sourceCpp_123123.dll
。
现在假设我在Windows 7上有两个不同的批处理文件,它们分别运行RScript -e "source('myRCode1.r')"
和RScript -e "source('myRCode2.r')"
。我希望每次运行f1
时都可以使用f2
和RScript
两个函数。
在运行其余代码之前,我当然可以将代码myRCode1.r
和myRCode2.r
放入Rcpp::sourceCpp('myPath/myCode.cpp')
。另一种方法是将我的两个函数f1
和f2
转换为一个包含更多参与过程的包。
是否可以轻松地在sourceCpp_123123.dll
和myRCode1.r
内加载myRCode2.r
?
我尝试使用dyn.load("myDllPath\sourceCpp_123123.dll")
,now=TRUE
,local=TRUE
,now=FALSE
的各种排列和组合local=FALSE
,但没有一个选项加载了这两个函数。
但是,当我尝试getLoadedDLLs
时,我看到sourceCpp_123123.dll
已加载!
答案 0 :(得分:0)
正如我之前评论的那样,这是你想要使用包的地方。
或者如果你是那些反对包装的人之一(无论如何通常说服经验丰富的R用户/程序员几乎总是提倡使用包装),那么你可以作弊并将你的两个文件组合成一。
将两个函数集耦合在一起。您可能已经知道,您可以将C ++和R代码混合在一个文件中,因为我们一直在Rcpp Gallery中进行...