2016-11-11 15 views
1

は、再生目的のために私のコードの簡略化の抜粋です。文字列のリストの検索と置換 - gsub eapply?ここ

library("quantmod") 
stockData <- new.env() 
stocksLst <- c("AAB.TO", "BBD-B.TO", "BB.TO", "ZZZ.TO") 
nrstocks = length(stocksLst) 
startDate = as.Date("2016-09-01") 

for (i in 1:nrstocks) { 
    getSymbols(stocksLst[i], env = stockData, src = "yahoo", from = startDate) 
} 

私のデータは、その後、私はいくつかの分析を行うために使用し、この環境stockDataに格納されます。私は現在XTSオブジェクトの名前をクリーンアップしたいと思います:

ls(stockData) 
[1] "AAB.TO" "BB.TO" "BBD-B.TO" "ZZZ.TO" 

私は削除する - をと名前のすべてから.TO、およびeapply GSUBとを使用しようとしました、成功することなく、適切な構文を理解することはできません。どんな助けもありがとう。ありがとう。

+1

これは簡単な検索と置換の文字列のリストです、あなたはタイトルに 'quantmod'を入れてはいけません。あなたがこれをやっている環境も無関係です。 – smci

答えて

1

as.listgsubの使用:

library("quantmod") 
stockData <- new.env() 
stocksLst <- c("AAB.TO", "BBD-B.TO", "BB.TO", "ZZZ.TO") 
nrstocks = length(stocksLst) 
startDate = as.Date("2016-09-01") 

for (i in 1:nrstocks) { 
    getSymbols(stocksLst[i], env = stockData, src = "yahoo", from = startDate) 
} 

ls(stockData) 
# [1] "AAB.TO" "BB.TO" "BBD-B.TO" "ZZZ.TO" 

#convert to list for ease in manipulation 
stockData = as.list(stockData) 

#find . and replace everything after it with "" 

names(stockData)= gsub("[.].*$","",names(stockData)) 

#alternately you could match pattern .TO exactly and replace with "" 

#names(stockData)= gsub("[.]TO$","",names(stockData)) 

ls(stockData) 
# [1] "AAB" "BB" "BBD-B" "ZZZ" 

#convert back to env 
list2env(stockData) 
+0

ありがとうございます - 私はこの方法を私の問題を解決するのが好き、素晴らしい作品、私は詳細な説明を感謝します。 –

+0

また、高度な統計情報やチャート機能のために 'library(PerformanceAnalytics)'もご覧ください。 – OdeToMyFiddle

1

の代わりにRを学びながら?regexgsub状のベースRの機能を使用して、あなたはそれがはるかに簡単ライブラリstringrの関数で文字列を操作することがあります。 str_replace

library(stringr) 
e.stocks <- list2env(setNames(lapply(stocksLst, function(x) y <- getSymbols(x, env = NULL)), 
        str_replace(str_replace(stocksLst, "-", ""), "\\.TO", ""))) 
+0

入力いただきありがとうございます!私は複数のステップを好むので、Osssanのソリューションを使用することに決めました - 私がまだノブであるので、私が維持し、コメントするのは簡単です! –

関連する問題