2

別のシステムで処理するために、(Win7 システムで) R スクリプトを自動化して、Bloomberg からデータを読み取り、それをファイルに書き込もうとしています。私のコードは R gui で完全に実行されます。そこで、以下に示すように、この .r ファイルを呼び出して結果を script.out に出力するバッチ ファイルを作成しました。バッチ ファイルをダブルクリックすると、すべてが正常に実行されます。バッチ ファイルを実行するタスクをスケジュールすると、R コードが実行され、Bloomberg からデータが収集されますが、ファイルへの書き込みは毎回失敗します。

Rコード

library(quantmod)
library(rJava)
library(Rbbg)

#Bloomberg connectivity
conn <- blpConnect()

#Initialize Java Virtual MAchine
.jinit(classpath="myClasses.jar", parameters="-Xmx512m")

setwd("C:/Users/abg/Skydrive/Documents/Bloomberg Historical Data 2013-07-30/data")
output_dir <- "W:/abg/Daily Forward Rates/"


results_df<- data.frame(Currency=character(), Spot=character(), sp_bid=numeric(), sp_ask=numeric(), 
                                TN=character(), tn_bid=numeric(), tn_ask=numeric(), 
                                SN=character(), sn_bid=numeric(), sn_ask=numeric(),stringsAsFactors=FALSE)



for(i in 1:length(list.files(pattern='*\\.csv')))
{
    currency <- substr(list.files(pattern='*\\.csv')[i],1,6)
    securities <- c(paste(currency, " Curncy", sep="")) 
    fields <- c("BID", "ASK", "TIME")
    bb_results<-bdp(conn, securities, fields)
    print(bb_results)

    results_df[i,1]<-currency
    results_df[i,2]<- "SPOT"
    results_df[i,3]<- bb_results$BID
    results_df[i,4]<- bb_results$ASK

}


results_df[is.na(results_df)]<-""

write.table(results_df, file = paste(output_dir, Sys.Date(), "_forward_rates.csv", sep=""), sep = ",", append=FALSE, row.names = FALSE, col.names=TRUE)

バッチ ファイル コード:

"C:\Program Files\R\R-3.0.1\bin\x64\R.exe" CMD BATCH --vanilla --slave "C:\Users\abg\SkyDrive\Documents\tom next rates from bloomberg.R" "C:\Users\abg\SkyDrive\Documents\script.out"

最後に、script.out ファイルの最後にあるステートメントは、write.table コマンドが失敗したことを示しているようです。

Error in file(file, ifelse(append, "a", "w")) : 
  cannot open the connection
Calls: write.table -> file
In addition: Warning message:
In file(file, ifelse(append, "a", "w")) :
  cannot open file 'W:/abg/Daily Forward Rates/2013-10-01_forward_rates.csv': No such file or directory
Execution halted

ネットワークドライブではなくローカルドライブにファイルを書き込もうとしましたが、同じ結果です。

どんな提案でも大歓迎です。

4

1 に答える 1

1

write.tableコマンドの代わりに次を試してください

f.nm <- paste0(output_dir, Sys.Date(), "_forward_rates.csv")

# break it down into finer steps
file.create(f.nm)
f <- file(f.nm, open="w") # or open="a" if appending

write.table(results_df, file = f, sep = ",", append=FALSE, row.names = FALSE, col.names=TRUE)

close(f)

これが失敗した場合、少なくともファイルが作成されているかどうかを確認できます。そうでない場合は、OS 接続または権限の問題が原因である可能性が高いことがわかります。

于 2013-10-01T16:37:10.047 に答える