如何正确输入含等号的股票代码ES=F以避免R代码报错?
解决R中quantmod调用ES=F期货代码报错的问题
使用quantmod从Yahoo Finance获取e-mini S&P 500期货(代码ES=F)历史数据时,barChart(ES=F)中的等号会被R识别为逻辑运算符,导致程序报错。原代码示例:
library(quantmod) library(TTR) library(PerformanceAnalytics) # 获取ES=F的股票价格 getSymbols ('ES=F', src = 'yahoo', from = '2019-01-01') # 绘制2023年3月e-mini S&P 500期货合约基础走势图 barChart(ES=F, theme = chartTheme('black'))
可行解决方案
方法一:手动接收数据(推荐)
指定getSymbols的auto.assign参数为FALSE,将数据赋值给自定义变量,避免使用带特殊字符的自动变量名:
library(quantmod) library(TTR) library(PerformanceAnalytics) # 手动接收数据,避免自动生成含特殊字符的变量 es_data <- getSymbols('ES=F', src = 'yahoo', from = '2019-01-01', auto.assign = FALSE) # 使用自定义变量名绘图 barChart(es_data, theme = chartTheme('black'))
方法二:用反引号访问自动创建的变量
如果保留getSymbols默认的自动赋值行为,需要在调用barChart时用反引号包裹变量名ES=F,明确告诉R这是一个变量而非表达式:
library(quantmod) library(TTR) library(PerformanceAnalytics) getSymbols ('ES=F', src = 'yahoo', from = '2019-01-01') # 用反引号包裹带特殊字符的变量名 barChart(`ES=F`, theme = chartTheme('black'))
问题原因说明
你之前尝试加反引号无效,是因为错误地处理了getSymbols的参数——getSymbols的第一个参数是字符串,'ES=F'本身没有问题;真正的问题出在barChart(ES=F)这一行,R会将ES=F解析为逻辑判断(判断ES是否等于FALSE),而非变量名。只有在访问变量时用反引号包裹,才能让R正确识别这是一个包含等号的变量名。
内容的提问来源于stack exchange,提问作者treewolf
相关产品推荐
相关产品推荐

