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

使用getSymbols.av获取数据时,整脚本运行报错的问题咨询

解决getSymbols.av在Source模式下返回空临时文件的问题

我之前帮朋友排查过类似的问题,结合你的描述——单独跑代码段正常,但Source整个脚本就报临时文件为空的错,大概率是API调用频率限制或者环境加载问题导致的,给你几个针对性的解决方案:

1. 给API调用添加延迟(最可能解决问题)

Alpha Vantage的免费版API有调用频率限制:5次/分钟、500次/天。你单独运行代码时,两次getSymbols.av调用之间有手动间隔,不会触发限流;但Source模式下代码会连续执行,两次请求太近,服务器会返回空内容,导致后续read.zoo读取临时文件时报错。

给每次调用后加个延迟就行:

# 获取GOOGL数据后等待15秒,避开限流
GOOGL <- getSymbols.av("GOOGL",auto.assign=F,return.class = "xts",adjusted=T,outputs.size="full",data.type="csv",periodicity = "weekly")
Sys.sleep(15) 

GOOG <- getSymbols.av("GOOG",auto.assign=F,return.class = "xts",adjusted=T,outputs.size="full",data.type="csv",periodicity = "weekly")
Sys.sleep(15) 

google <- rbind.xts(GOOGL["2013-05-17/2014-04-04"],GOOG["2013-05-17/2018-05-18"])
google <- google[-48,]

2. 显式设置Alpha Vantage API密钥

有时候单独运行时,你的R环境已经加载了API密钥,但Source脚本时可能没读取到(比如密钥存在.Rprofile里,脚本启动时没加载),导致请求失败返回空。可以在脚本开头直接设置密钥:

# 替换成你自己的Alpha Vantage API密钥
av_api_key("YOUR_API_KEY_HERE")

# 之后再执行getSymbols.av调用
GOOGL <- getSymbols.av(...)

3. 检查临时目录权限

Windows系统下,默认临时目录可能存在权限问题,导致getSymbols.av无法写入/读取临时文件。你可以指定一个自己有权限的目录作为临时目录:

# 创建并设置自定义临时目录(替换成你自己的路径)
temp_dir <- "C:/MyR_Temp"
dir.create(temp_dir, showWarnings = FALSE)
Sys.setenv(TMP = temp_dir, TEMP = temp_dir)

# 再执行后续代码
GOOGL <- getSymbols.av(...)

4. 尝试更新相关包或R版本

你的R版本是3.4.3(2017年的版本),比较老旧,可能quantmod或alphavantager包存在兼容性bug。如果条件允许:

  • 先尝试更新相关包:
update.packages(c("quantmod", "alphavantager"), ask = FALSE)
  • 要是更新包后还是有问题,建议升级R到4.x的稳定版本(比如4.3.1),新版本对包的兼容性更好,也能避免很多老版本的bug。

最后提醒你:提交给教授前,记得不要把API密钥硬编码在脚本里,可以用Sys.getenv("ALPHAVANTAGE_API_KEY")来读取环境变量里的密钥,更安全规范。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 09:47:57