Fijación de dimnames (x) de objetos XTS en r a través de bucle
Pregunta
Suponga que tengo una lista de variables (clase: XTS) en .GlobalEnv
identificado de la siguiente manera:
ABC.xyz
DEF.xyz
GHI.xyz
Estas variables se generan a través de una función.
En la actualidad, los "encabezados de columna" en cada variable no tienen sentido de la salida de la función original.
Me gustaría cambiar el nombre de las columnas en cada una de estas variables a las tres primeras letras del nombre de la variable, seguido de un sufijo genérico; decir:
".XXX"
He intentado escribir un bucle rápido que usa la función dimnames(x)
Para lograr esto es el siguiente:
rename.list <- ls(pattern="*.xyz",envir=.GlobalEnv)
for (i in 1:length(rename.list)){
dimnames(rename.list[i]) <-list(
NULL,
c(paste(substr(rename.list[i],0,3),".XXX",sep="")))
}
Esto produce el error:
error in dimnames(rename.list[i]) <- list(NULL, c(paste(substr(rename.list[i], 0, 3), :
'dimnames' applied to non-array
puedo ver por qué Este error ocurre (el uso de dimnames en rename.list está llamando al nombre en sí mismo en lugar del objeto XTS), pero no estoy seguro de cómo evitar esto. Intenté usar get
etc.
Detalles:
R 2.13 Win 7 Paquete 'XTS' cargado.
Muchas gracias de antemano por cualquier ayuda (¡o sugerencia para evitar el ciclo!)
Solución
Puedes probar assign
:
tmp <- get(rename.list[i])
names(tmp) <- ...
assign(rename.list[i], tmp, envir=.GlobalEnv)