简而言之,我想为R项目制作一个C#前端。
有点费力:我想使用RDotNet在我的C#代码中使用在R项目(RTVS)中定义的函数,但是在Google中进行大量搜索没有产生任何结果(顺便说一句,似乎问题不大)问,所以我知道我这里可能有一个“您没有看到明显的问题” ...但是,如果是这样,我几个小时都没看到明显的问题!)。
更具体地说:
rEngine.Evaluate("source('Script.R')");
的方式来访问我在Script.R中编写的代码。几点:
rEngine.Evaluate("source('C:\<Project Address Here>\Script.R')");
所示,但这使我的项目依赖于R文件在文件系统中的特定位置。我知道我可以将此位置设置为可以在配置文件中放置的参数,但是必须有一个更优雅的内置解决方案...对吧?source('Script.R')
并且我的函数可以正常加载版本规范:
有人可以帮我吗?
谢谢和欢呼!
答案 0 :(得分:1)
我只是可以将文件链接到项目,所以我可以将指向.R文件的链接放在C#项目中,并将它们复制到项目输出的文件夹中。
这是通过在按住Alt键的同时从R项目中拖动.R文件并将其拖放到我的C#项目中的某个位置(最好是在正确命名的项目文件夹中)之后,再转到新链接的.R文件的属性和将其设置为复制到项目的输出中(这是绝对必要的,因为链接不是真实文件,并且在构建项目时不会在预期的文件系统文件夹中,除非将文件标记为在构建时复制)
这不是我所期望的优雅解决方案,但是即使我必须将项目部署到其他位置,它也可以将.R文件保存到已知的固定位置,因此我可以执行类似rEngine.Evaluate("source('R Scripts/Script.R')");
的操作并在我的C#代码中将我的函数正确设置为在R环境中运行(通过RDotNet),同时仍然能够在R项目中正确地对其进行编辑,并在其中找到所有语言支持。
不过,如果有人认为有更好的解决方案,请带上它!