2016-08-17 71 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文件中時,有一個對我定義的函數的調用。