2016-05-12 19 views
0

私は一連のネストされた関数呼び出しを行い、簡単な例では再現できない異常な動作を見ているので、元のコードは次のとおりです。R関数は変数を出力しますが、オブジェクト<variable>が見つかりませんでした。

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

と、次の出力を得る:

Error in cat("1 getDateRanges params: startDate=", startDate, "| endDate=", : 
object 'startDate' not found 
:このエラーメッセージに続いて

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 

をこのコードから生成され

:この関数を呼び出す

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に開始日と終了日のベクトルを渡すことができますが、関数の本体にあなたは、ベクトルの要素を参照する必要があります。上記の方法を使用すると、これを書き換える必要はありません。

関連する問題