我正在使用R.Net 1.5尝试使用ARIMA进行简单的预测.我试过R 2.14和R 2.15.我正在使用Visual Studio 2012目标.NET 4,虽然我也尝试过.NET 4.5和Visual Studio 2010.
这是我写的一段代码:
string rhome = System.Environment.GetEnvironmentVariable("R_HOME");
if (string.IsNullOrEmpty(rhome))
rhome = @"C:\Program Files\R\R-2.14.0";
System.Environment.SetEnvironmentVariable("R_HOME", rhome);
System.Environment.SetEnvironmentVariable("PATH", System.Environment.GetEnvironmentVariable("PATH") + ";" + rhome + @"\bin\x64");
using (REngine engine = REngine.CreateInstance("RDotNet"))
{
engine.Initialize();
NumericVector testGroup = engine.CreateNumericVector(submissions);
engine.SetSymbol("testGroup", testGroup);
engine.Evaluate("testTs <- c(testGroup)");
NumericVector ts = engine.GetSymbol("testTs").AsNumeric();
engine.Evaluate("tsValue <- ts(testTs, frequency=1, start=c(2010, 1, 1))");
engine.Evaluate("library(forecast)");
engine.Evaluate("arimaFit <- auto.arima(tsValue)");
engine.Evaluate("fcast <- forecast(tsValue, h=36)");
engine.Evaluate("plot(fcast)");
NumericVector nv = engine.GetSymbol("fcast").AsNumeric();
Run Code Online (Sandbox Code Playgroud)
我尝试检索数字向量时失败.TI在这里遇到一些错误.第一个是"错误:对象无法强制键入'double'",第二个是"错误:捕获访问冲突 - 继续小心"
如果我将预测检索为GenericVector,我会得到一个RDotNet.SymbolicExpressions列表.我已经通过这些来查看它们包含的内容,它似乎与ARIMA功能有关但我找不到实际的预测输出.我可以找到输入和其他相关值以及一堆数字列表,我无法确定它们是什么.
如果我在Revolution中运行脚本,我可以看到输出应该是什么,这就是我如何确定R.Net的输出是否准确.我想R.Net可能会以不同于Revolution的方式执行预测(尽管我认为不太可能),并且genericvector中的一个输出确实是正确的输出.
这是GenericVector初始化.我用毯子试着,只是为了调试目的:在DynamicVector里面我可以实际检查细节.
GenericVector newVector = …
Run Code Online (Sandbox Code Playgroud) 我要做的是设置面向公众的Web应用程序,但调用内部网络上的数据库.我一直在尝试使用公有子网,私有子网和硬件VPN访问来设置AWS VPC,但我似乎无法使其工作.
有人可以帮我理解这里的流程应该是什么?我的理解是我需要一个公共子网来处理网站请求,然后一个私有子网连接到VPN,但我不明白的是如何向链中发送请求并获得响应.基本上我要问的是如何从该公共网站通过VPN查询数据库?
我已尝试在路由转发期间但我无法成功完成此过程.
有没有人对我可以阅读的关于这个主题的内容或关于设置这样的东西的常见问题解答有任何建议?它甚至可能吗?如果重要,所有这些服务器都将运行Windows Server
我不在这里,这不是我的专业领域,但我被要求解决这个问题.任何帮助,将不胜感激.
谢谢
我有一个控制台应用程序,它执行一些数据工作然后关闭。如果我手动运行可执行文件,它将打开命令提示符,运行程序,然后关闭。无论我使用什么 Microsoft 操作系统,都没有任何问题。
但是,如果我尝试将该程序作为计划任务运行,它会在一台运行 Windows Server 2008 R2 的特定服务器上失败。它作为计划任务在其他服务器上运行得很好,包括同一建筑物中的另一个 Windows Server 2008 R2 机器。不幸的是,这一台服务器是它需要运行的服务器。我尝试添加日志记录、写入事件日志、以管理方式执行应用程序、强制使用 32 位或 64 位,以及从 .bat 文件单独启动它。没有什么。该程序没有崩溃,只是永远无法打开。
有谁知道可能是什么原因造成的?我很茫然,不知道该怎么办。
编辑:我创建了一个测试 .bat 文件,该文件仅启动命令提示符以查看是否会打开命令提示符窗口。它不是。其他任务似乎运行良好。
编辑#2:我对此进行了研究,结果是将任务设置为在桌面上启用。我找不到该选项,也想不出它可以解决此问题的原因,但它似乎不断出现。
我必须编写一个LINQ语句,该语句查找项目在过去90天内出现在数据库中的次数.这很简单,但他们希望在1-30天,31-60天和61-90天内查看数据.
我目前正在做的是创建一个包含四组数据的模型,获取所有唯一SKU的列表,然后查找它们在数据库中出现的次数.
我的问题是日期范围.我正在创建新的DateTime对象并向他们添加NEGATIVE天,我正在尝试使用它来比较范围.我无法弄清楚怎么说这样的话:
编辑日期介于(-30天)和(-60天)之间.
我不能使用SP.必须有一个更简单的方法.也许使用时间跨度,看看它是否落在那个跨度?我不确定.我很少与约会合作.
我有一个数据库,varchar(255)
用作存储许多不同数据类型的占位符.我试图将其中一些值转换decimal
为数值比较.
如果我尝试使用以下函数,将导致标题中的错误
ISNUMERIC(Value + 'e0') = 1 and CONVERT(decimal (16,4), Value) < CONVERT(decimal (16,4),11)
Run Code Online (Sandbox Code Playgroud)
我觉得这很奇怪所以我移动CONVERT
到select语句中,看看是否还有一些值ISNUMERIC
没有捕获.没有.在CONVERT
上面能每单柱成功转换没有任何错误.
select CONVERT(decimal (16,4), Value)
Run Code Online (Sandbox Code Playgroud)
接下来,我尝试将select包装在另一个select中,并将比较移动到外部查询.这也没用,也导致大量的内存使用,所以我放弃了这个想法.
我的一位同事认为可能有一行数据引起了问题,即使CONVERT
选择工作正常,也值得一试.我们尝试了一个REPLACE
内部CONVERT
,如下所示:
ISNUMERIC(Value + 'e0') = 1 and CONVERT(decimal (16,4),REPLACE(Value, 'blah', '')) < CONVERT(decimal (16,4), 11)
Run Code Online (Sandbox Code Playgroud)
......不知何故,这有效.无论我们在替换中输入什么,它都可以正常工作.它显然没有取代任何东西.我读过这REPLACE
将截断非常大的数据(8,000多个字节),但这是一个varchar(255)
,因此没有任何大数据可以截断.
我很好奇为什么这个有用,或者是否还有其他东西可能会在这里发生并REPLACE
巧合工作?这对我没有任何意义.
编辑:为了清楚,我坚持这个数据库设计.我无法改变它.我意识到这是一种存储数据的可怕方式.相信我.
编辑#2:我刚刚发现它TRY_CONVERT
也会起作用.我认为我的原始问题仍然存在.即使我有两个可能的解决方案,我也不明白为什么它会破裂.