我有一些90个金融符号的数据帧(将使用3为简单起见)R - 使用列表中的名称将命名对象提供给循环?
> 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'对于那些暗示加载此的各种包调用。此外,我建议在将来添加应用于'syM'的'dput'的输出。 –
会做,谢谢。我相信唯一使用的库是'library(quantmod)',但那只是获取符号的数据。 – MRGiacalone2005