我有一个C ++代码(hello world代码在文本文件中打印“ hello world!”)。
#include <iostream>
#include <fstream>
using namespace std;
int main(int argc, const char * argv[]) {
// insert code here...
ofstream myfile;
myfile.open ("Hello_World.txt");
myfile << "Hello World! This is a test.\n";
myfile.close();
return 0;
}
我想看看是否有可能在Shinyapp.io上编译我的C ++代码,然后在服务器上执行编译后的文件并获取“ Hello_World.txt”文件吗?如果没有,我应该如何在本地计算机上编译我的代码,以便一旦在服务器上传输编译后的代码,便可以在shinyapp.io中执行该代码?
我更关心这种方法(在本地计算机上编译Fortran或C ++代码并在Shinyapp.io上运行)。我的目标是将来将方法扩展到更复杂的代码。
答案 0 :(得分:0)
您可以毫无问题地编译cpp文件,请参见您为shinyapp.io采用和部署的代码:
app.R:
library(Rcpp)
library(shiny)
Rcpp::sourceCpp("test_rcpp.cpp")
shiny::shinyApp(
ui = fluidPage(
titlePanel(hello()),
sidebarLayout(
sidebarPanel("content of Hello_world.txt"),
mainPanel(readChar("Hello_World.txt", file.info("Hello_World.txt")$size))
)
),
server = function(input, output, session) {
}
)
test_rcpp.cpp:
#include <Rcpp.h>
#include <iostream>
#include <fstream>
using namespace Rcpp;
using namespace std;
// This is a simple example of exporting a C++ function to R. You can
// source this function into an R session using the Rcpp::sourceCpp
// function (or via the Source button on the editor toolbar). Learn
// more about Rcpp at:
//
// http://www.rcpp.org/
// http://adv-r.had.co.nz/Rcpp.html
// http://gallery.rcpp.org/
//
// [[Rcpp::export]]
CharacterVector hello() {
ofstream myfile;
myfile.open ("Hello_World.txt");
myfile << "Hello World! This is a test.\n";
myfile.close();
return "Hello, World is saved";
;
}
// You can include R code blocks in C++ files processed with sourceCpp
// (useful for testing and development). The R code will be automatically
// run after the compilation.
//
/*** R
*/
答案 1 :(得分:0)
更新:
我终于能够在Shinyapp.io上执行编译后的代码。关于文件许可权有一个错误,我以前在Shinyapp.io日志上得到了1.txt starts
2.txt starts
3.txt starts
4.txt starts
3.txt ends
1.txt ends
2.txt ends
4.txt ends
5.txt starts
5.txt ends
错误。直到我发现需要在Shinyapp.io(而不是本地计算机)上执行期间,在server.R(使用permission denied
命令)上设置已编译代码的权限。谢谢大家的评论。