R 在字符串列表上搜索并替换-gsub eapply?

R 在字符串列表上搜索并替换-gsub eapply?,r,replace,gsub,quantmod,string-substitution,R,Replace,Gsub,Quantmod,String Substitution,以下是我的代码的简化摘录,以供复制: 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 = sto

以下是我的代码的简化摘录,以供复制:

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)
}

我想从所有名称中删除-和.to,并尝试使用gsub和eapply,但没有成功-无法找到合适的语法。任何帮助都将不胜感激。谢谢。

使用
as.list
gsub

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)
library(“quantmod”)

股票数据使用
as.list
gsub

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)
library(“quantmod”)

stockData在学习R时,您可能会发现使用库中的函数操作字符串要容易得多,而不是将基本R函数(如
gsub
?regex
一起使用。您可以使用
str\u replace

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

e、 stocks学习R时,您可能会发现使用库中的函数操作字符串要容易得多,而不是将基本R函数(如
gsub
?regex
一起使用。您可以使用
str\u replace

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

e、 股票这是一个简单的搜索和替换字符串列表,你不应该把'quantmod'的标题;此外,您执行此操作的环境也不相关。这是一个简单的字符串列表搜索和替换,您不应该在标题中添加“quantmod”;另外,您这样做的环境也无关紧要。谢谢-我喜欢这个方法来解决我的问题,效果很好,我感谢您的详细解释。很高兴能提供帮助,也可以查看
库(PerformanceAnalytics)
了解高级统计和图表功能谢谢-我喜欢这个方法来解决我的问题,效果很好,我很感谢您的详细解释。很高兴能提供帮助,还可以查看
库(PerformanceAnalytics)
了解高级统计数据和图表功能感谢您的输入!我决定使用Osssan的解决方案,因为我更喜欢多个步骤——因为我还是一个noob,所以更容易维护和评论!谢谢你的意见!我决定使用Osssan的解决方案,因为我更喜欢多个步骤——因为我还是一个noob,所以更容易维护和评论!