2016-05-12 115 views
0

我正在進行一系列嵌套函數調用,並看到一些我不能用簡單示例重現的異常行爲,所以原始代碼如下所示:R函數打印變量但報告對象<variable>找不到

source("DataManager.R") 
x <- getQuotesFromService('JNJ', '2016-04-01', '2016-05-10') 

,並得到下面的輸出:

getQuotesFromService parameters: 
sDate= 2016-04-01 , eDate= 2016-05-10 , service= finance.yahoo 
getQuotesFromService USING FINANCE.YAHOO SERVICE: 
sDate= 2016-04-01 , eDate= 2016-05-10 , service= finance.yahoo 
1 getDateRanges params: startDate= 2016-04-01 | endDate= 2016-05-10 

後跟此錯誤消息:

Error in cat("1 getDateRanges params: startDate=", startDate, "| endDate=", : 
object 'startDate' not found 

這是從這個代碼生成:

getQuotesFromService <- function(ticker, sDate, eDate, service="finance.yahoo") { 
library(XML) 
cat("getQuotesFromService parameters:\n", 
    "sDate=", sDate, ", eDate=", eDate, ", service=", service, "\n") 
quotes <- NULL 
if(service == "finance.yahoo") { 
    source('YahooQuotes.R') 
    cat("getQuotesFromService USING FINANCE.YAHOO SERVICE:\n", 
     "sDate=", sDate, ", eDate=", eDate, ", service=", service, "\n") 
    dateRanges <- getDateRanges(sDate, eDate, 360, 10) 
    quotes <- getMultipleYqlQuotes(dateRanges) 
} 

return(quotes) 
} 

它調用這個函數:

getDateRanges <- function(startDate, endDate, 
         daysInInterval=360, 
         maxAllowableYears=10) { 
    cat('1 getDateRanges params: startDate=', startDate, 
     '| endDate=', endDate, '\n') 

    ## MORE STUFF HERE, BUT GETS EXECUTED AFTER POINT OF ERROR ## 

} 

令我百思不解的是,的startDate得到的呼叫getDateRanges打印出來,但R告訴我,對象'startDate'未找到

任何想法爲什麼我看到這種行爲?

回答

0

我懷疑你沒有正確地將getDateRanges的輸出傳遞給getDateRanges

嘗試類似如下:

quotes <- getMultipleYqlQuotes("startDate"=dateRanges[1], "endDate"=dateRanges[2]) 

您可以通過開始和結束日期的載體getMultipleYqlQuotes,但在功能的身體,你將不得不參考向量的元素。如果你使用上面的方法,你將不必重寫這個。