我正在尝试在Windows窗体中创建一个GUI(目前正在尝试从控制台执行),它将提供一些参数,这些参数将传递给Rmarkdown呈现为任何格式。将来我希望这可以通过GUI完成,但至少开始我想我会尝试一个基本的控制台应用程序。
我有三个档案;一个应该执行R代码的.cs文件,test.R包含一行来呈现Rmarkdown文件。 (如果我在例如RStudio中运行它可以正常工作)。最后,我的rmarkdown文件基本上运行了一个非常基本的SQL查询。
ConsoleApp1.cs:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApp1
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Hello World!");
/* RScriptRunner.RunFromCmd(curDirectory + @"\test.R", "rscript.exe");*/
System.Diagnostics.Process proc = new System.Diagnostics.Process();
proc.StartInfo.FileName = "C:/Program Files/R/R-3.3.1/bin/Rscript.exe";
proc.StartInfo.WorkingDirectory = "C:/Users/chris/Documents";
proc.StartInfo.Arguments = "C:/Users/chris/Documents/test.R";
proc.StartInfo.UseShellExecute = true;
proc.StartInfo.RedirectStandardOutput = false;
proc.Start();
Console.WriteLine("Report generated");
Console.Read();
}
}
}
test.R
rmarkdown::render("C:/Users/chris/Documents/Rmarkdown.Rmd", params = list(ProdNo = "501", TransTyp = 1))
Rmarkdown.Rmd
---
title: "Rmarkdown-report"
author: "Chris"
date: "2017"
output: html_document
params:
ProdNo: '501'
TransTyp: 1
---
```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = TRUE)
```
```{r SQLConnection, include=FALSE}
library(RODBC)
dbhandle <- odbcDriverConnect('driver={SQL Server};server=myserver\\SQLEXPRESS;database=mydb;trusted_connection=true')
```
```{r SQLQuery, include=FALSE}
tempQuery <- sprintf('SELECT * FROM ProdTr WHERE ProdNo = %s AND TrTp = %s', params$ProdNo, params$TransTyp)
```
```{r Results, include=TRUE}
results <- sqlQuery(dbhandle, tempQuery)
results
```
```{r Cleanup, include=FALSE}
odbcClose(dbhandle)
```
我设法让脚本至少开始执行并提供辅助控制台窗口。但是,我没有得到R代码本身生成的预期HTML文件。
如果有人也知道如何使C#打开生成的文件,这将是惊人的。
非常感谢任何正确方向的帮助或指示!
此致
克里斯