You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

R语言处理含特殊字符的xts对象 雅虎金融数据获取问题问询

问题核心原因

R的变量名不允许包含=等特殊字符,getSymbols默认会将拉取到的CL=F数据直接赋值给名为CL=F的全局变量,这种非法命名的变量无法直接通过$符号调用,同时原有代码聚合步骤错误使用了微软股票MSFT的索引,也会导致结果异常。

解决方案

方案1(最推荐):关闭自动赋值,手动指定存储变量

调用getSymbols时添加auto.assign = FALSE参数,直接将返回的数据集赋值给自定义的合法变量名,完全规避非法变量名问题:

library(tidyquant)

# 拉取原油数据,直接赋值给自定义变量crude_oil
crude_oil <- getSymbols("CL=F", from = "2000-08-01", to = "2021-07-31", src = 'yahoo', periodicity = 'daily', auto.assign = FALSE)

# 聚合月度平均收盘价,索引使用原油数据本身的索引
output <- aggregate(crude_oil$`CL=F.Close`, list(format(index(crude_oil), "%Y-%m")), mean)
colnames(output) <- c('ClosingPrice')

# 生成时间序列
price = ts(output$ClosingPrice, frequency=12, start=c(2000,08))
summary(price)

方案2:用反引号包裹非法变量名调用

如果不想修改getSymbols的默认赋值逻辑,可以用反引号` 包裹含特殊字符的变量名和列名,直接调用:

library(tidyquant)

getSymbols("CL=F", from = "2000-08-01", to = "2021-07-31", src = 'yahoo', periodicity = 'daily')
# 用反引号包裹非法变量名和列名
output <- aggregate(`CL=F`$`CL=F.Close`, list(format(index(`CL=F`), "%Y-%m")), mean)

内容的提问来源于stack exchange,提问作者natalieee

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 19:36:03