J'ai une trame de données de quelque 90 symboles financiers (3 utilisera pour simplifier) R - Utiliser des noms dans une liste pour alimenter des objets nommés en boucle?
> View(syM)
symbol
1 APPL
2 YAHOO
3 IBM
J'ai créé une fonction qui obtient des données JSON pour ces symboles et produire une sortie. Fondamentalement:
nX <- function(x) {
#get data for "x", format it, and store it in "nX"
nX <- x
return(nX)
}
J'ai utilisé une boucle pour obtenir les données et stocker la série de zoo nommée après chaque symbole en conséquence.
for (i in 1:nrow(syM)) {
assign(x = paste0(syM[i,]),
value = nX(x = syM[i,]))
Sys.sleep(time = 1)
}
qui se traduit par:
[1] "APPL" "YAHOO" "IBM"
Chacun d'eux est une série de zoo avec 5 colonnes de données.
En outre, je veux faire un peu de traçage à chaque série et sortir le résultat, de préférence en utilisant une boucle for ou quelque chose de mieux.
yN <- function(y) {
#plot "y" series, columns 2 and 3, and store it in "yN"
yN <- y[,2:3]
return(yN)
}
Suivant une logique similaire à ma boucle précédente J'ai essayé:
for (i in 1:nrow(syM)) {
assign(x = paste0(pairS[i,],".plot"),
value = yN(y = paste0(syM[i,])))
}
Mais jusqu'à présent, les données ne sont pas envoyées à la fonction, seul le nom du symbole, donc je reçois naturellement:
y[,2:3] : incorrect number of dimensions
J'ai aussi essayé:
for (i in 1:nrow(syM)) {
assign(x = paste0(syM[i,],".plot"),
value = yN(y = ls(pattern = paste0(syM[i,]))))
}
Avec des résultats similaires. Lorsque je saisis le nom de la série manuellement, le tracé du premier symbole est sauvegardé en tant que "APPL.Plot".
assign(paste0(syM[1,], ".Plot"),
value = yN(p = APPL))
Vous avez sûrement omis d'inclure les appels à 'library' pour les différents paquets qui sont sous-entendus à charger pour cela. Aussi je suggère à l'avenir d'ajouter la sortie de 'dput' à' syM'. –
Fera, merci.Je crois que la seule bibliothèque utilisée est 'library (quantmod)', mais c'est seulement pour obtenir les données pour les symboles. – MRGiacalone2005