2016-08-17 72 views
0

我在尝试调用我在VBA中创建的R函数时遇到问题。问题不是来自VBA和R之间的连接,但是当我的R代码必须调用我自己的函数时,程序停止。为了更清楚,这里是R代码:从VBA运行用户定义的R函数

args = commandArgs(trailingOnly=T) 
sink('Y:/Documents/BC10.txt', append=F, type = "output",split=TRUE) 
source("Y:/Documents/myfunction.R") 
cat('TEST !!') 
simul = args[1] 
level = args[2] 
spd1 = args[3] 
spd2 = args[4] 
spd3 = args[5] 
date_valo = toString(args[6]) 
swap_rate = args[7] 
l1 = 0 
u1 = 0.03 
rho2 = 0.5 
cat('\nparameters are: ', simul, level, spd1 , spd2, spd3, date_valo, swap_rate) 

PV_eq=PV_eq=myfunction(l1,u1,spd1,rho2,simul,level, date_valo, swap_rate) 
cat(PV_eq) 
sink() 

当我跑我的VBA代码,程序没有很好关于在文本文件“BC10.txt”参数的显示,但它不显示PV_eq。所以,我认为该程序无法调用我的用户定义函数“myfunction”。

有没有人有我遇到的问题的想法?也许,我必须在我的VBA代码(或R代码)中添加一些内容,以便VBA考虑用户定义的函数?

+1

我不是一个'R'程序员,但是你的'myfunction'代码是什么?问题可能在那里? – sous2817

+0

如果您的问题只针对'R',请删除VBA和Excel-VBA标签。如果你在'VBA'中有'R'的问题,那么请在问题中附加VBA代码。另外,请您详细说明您用于执行'R'代码的'R'主机:[RExcel](http://rcom.univie.ac.at/download.html),[通过SQL的R] (https://msdn.microsoft.com/en-us/library/mt604845.aspx),[调用Rscript](http://stackoverflow.com/a/24065842)或其他一些意思? – Ralph

回答

0

感谢您的回答。

我不认为问题来自我的R代码,因为当我在R中运行函数“myfuntion”时,它的工作原理。

我正在使用Rexcel来执行我的R代码。下面是VBA代码:

子Compute_BC()

昏暗的外壳作为对象 设置SHELL = VBA.CreateObject( “WScript.Shell”) 昏暗waitTillComplete由于布尔:waitTillComplete =真 昏暗的风格作为整数:式= 1 昏暗的errorCode作为整数 昏暗路径作为字符串

Dim simul, level As Variant 
Dim spd1, spd2, spd3, swap_rate As Variant 
Dim date_valo As String 

SIMUL = BC.Range( “B6”)值

级别= BC.Range( “B4”)。值

SPD1 = BC.Range( “B13”)。值

SPD2 = BC.Range( “C13”)。值

SPD3 = BC.Range( “D13”)。值

date_valo = BC.Range( “B1”)。值

swap_rate = BC.Range( “B5”)。值

路径=“ “”“& Cells.Range(”RhomeDir“)& “” “ ”“” & Cells.Range( “MyRscript”)& “” “” & “” & SIMUL & “” &水平& “” & SPD1 & “” & SPD2 & “” & SPD3 & “” & date_valo & “” & swap_rate

的errorCode = shell.Run(路径,风格,waitTillComplete)

结束子

Rmq:我用一个简单的R文件测试了这个VBA代码,它工作。问题出现在我的R文件中时,有一个对我定义的函数的调用。