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!)

¿Fue útil?

Solución

Puedes probar assign:

tmp <- get(rename.list[i])
names(tmp) <- ...
assign(rename.list[i], tmp, envir=.GlobalEnv)
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top