我有一些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