2016-12-04 20 views
0

私は繰り返し処理して、調整後の過去の価格を把握したい株価のリストを持っています。その後、出力を結合します。しかし、ティッカーの1つが間違っているためにエラーが見つかった場合は、(i)次のティッカーをスキップして取得するか、(ii)そのテロップをエラーとしてキャプチャします。ここではいくつかのおもちゃのコードは次のとおりです。Quantmodエラー処理不正なティッカー

明らかに
require(quantmod) 

symbols <- c("KO","FANATASTICALLYCOOL","MSFT","LUCKYDEVIL","LMT") 
getSymbols(symbols, from="1990-01-01") 
prices <- list() 
for(i in 1:length(symbols)) { 
    prices[[i]] <- try(Ad(get(symbols[i]))) 
} 

prices <- do.call(cbind, prices) 
colnames(prices) <- gsub("\\.[A-z]*", "", colnames(prices)) 

、FANTASTICALLYCOOLとLUCKYDEVILは本当のティッカーではありませんが、不思議なことに、何のエラーはアップキックません。実際には、これは私が(価格)

   KO FANATASTICALLYCOOL  MSFT  LUCKYDEVIL LMT 
1990-01-02 2.737389 2.737389   0.418482 0.418482 5.970848 
1990-01-03 2.697907 2.697907   0.420840 0.420840 5.934217 
1990-01-04 2.684747 2.684747   0.433218 0.433218 5.915902 
1990-01-05 2.662812 2.662812   0.422608 0.422608 6.080741 
1990-01-08 2.719841 2.719841   0.429092 0.429092 6.025795 
1990-01-09 2.697907 2.697907   0.427913 0.427913 5.989164 

FANTASTICALLYCOOLとLUCKYDEVILは、先行するティッカーの値を取っているヘッドに得るものです。私は、Rにティッカーをスキップさせたり、NAの完全な列を入力したりしたいと思います。

try()とtryCatch()の両方を使用してみました。

答えて

2

getSymbolsはエラーを投げるべきです。試してみてください

symbols <- c("KO","FANATASTICALLYCOOL","MSFT","LUCKYDEVIL","LMT") 
out <- sapply(symbols, function(s) tryCatch({ 
    getSymbols(s , env = NULL) 
    }, error = function(e) NA) 
) 

dd <- lapply(out, function(x) if (any(is.na(x))) NA else Ad(x)) 
dd <- do.call(cbind, dd) 
#   KO.Adjusted FANATASTICALLYCOOL MSFT.Adjusted LUCKYDEVIL LMT.Adjusted 
# 2007-01-03 18.03268     NA  23.47842   NA  66.64122 
# 2007-01-04 18.04010     NA  23.43910   NA  66.46724 
# 2007-01-05 17.91389     NA  23.30543   NA  66.70646 
# 2007-01-08 18.02896     NA  23.53346   NA  67.91707 
# 2007-01-09 18.04381     NA  23.55704   NA  67.85182 
# 2007-01-10 18.06979     NA  23.32116   NA  68.56224 
+0

優秀!これは完全に機能しました。ありがとう@Weihuangウォン – huesecon

関連する問題