【发布时间】:2017-12-23 23:55:55
【问题描述】:
我有一个包含大约 90 个金融符号的数据框(为简单起见,将使用 3 个)
> View(syM)
symbol
1 APPL
2 YAHOO
3 IBM
我创建了一个函数,用于获取这些符号的 JSON 数据并生成输出。基本上:
nX <- function(x) {
#get data for "x", format it, and store it in "nX"
nX <- x
return(nX)
}
我使用循环来获取数据并相应地存储以每个符号命名的动物园系列。
for (i in 1:nrow(syM)) {
assign(x = paste0(syM[i,]),
value = nX(x = syM[i,]))
Sys.sleep(time = 1)
}
结果:
[1] "APPL" "YAHOO" "IBM"
每个都是一个包含 5 列数据的动物园系列。
此外,我想对每个系列进行一些绘图并输出结果,最好使用 for 循环或更好的方法。
yN <- function(y) {
#plot "y" series, columns 2 and 3, and store it in "yN"
yN <- y[,2:3]
return(yN)
}
遵循与我之前尝试的循环类似的逻辑:
for (i in 1:nrow(syM)) {
assign(x = paste0(pairS[i,],".plot"),
value = yN(y = paste0(syM[i,])))
}
但是到目前为止数据并没有被发送到函数,只有符号的名称,所以我自然得到:
y[,2:3] : incorrect number of dimensions
我也试过了:
for (i in 1:nrow(syM)) {
assign(x = paste0(syM[i,],".plot"),
value = yN(y = ls(pattern = paste0(syM[i,]))))
}
结果相似。当我手动输入系列名称时,它会将第一个符号的图保存为“APPL.Plot”。
assign(paste0(syM[1,], ".Plot"),
value = yN(p = APPL))
【问题讨论】:
-
当然,您没有包括对
library的调用,以获取暗示要为此加载的各种包。另外我建议您将来将dput的输出添加到syM。 -
会的,谢谢。我相信唯一使用的库是
library(quantmod),但这只是为了获取符号的数据。
标签: r for-loop dataframe zoo names