Исправление dimnames(x) объектов xts в R с помощью цикла

Предположим, у меня есть список переменных (класс: xts) в .GlobalEnv, идентифицированный следующим образом:

ABC.xyz
DEF.xyz
GHI.xyz

Эти переменные генерируются через функцию.

В настоящее время «заголовки столбцов» в каждой переменной являются ерундой из вывода исходной функции.

Я хотел бы переименовать столбцы в каждой из этих переменных, указав первые три буквы имени переменной, за которыми следует общий суффикс; сказать:

".XXX"

Я попытался написать быстрый цикл, который использует функцию dimnames(x) для достижения этого, следующим образом:

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="")))
}

Это приводит к ошибке:

error in dimnames(rename.list[i]) <- list(NULL, c(paste(substr(rename.list[i], 0, 3), : 'dimnames' applied to non-array

Я понимаю, почему возникает эта ошибка (использование dimnames в rename.list вызывает само имя, а не объект xts), но не уверен, как это обойти. Пробовал использовать get и т.д.

Подробности:

Пакет R 2.13 Win 7 «xts» загружен.

Заранее большое спасибо за любую помощь (или предложения вообще избежать цикла!)


r xts
person n.e.w    schedule 11.01.2012    source источник


Ответы (1)


Вы можете попробовать assign:

tmp <- get(rename.list[i])
names(tmp) <- ...
assign(rename.list[i], tmp, envir=.GlobalEnv)
person Vincent Zoonekynd    schedule 11.01.2012
comment
(будущие гуглеры - если неясно, поместите эти 3 строки выше внутри цикла ОП.) - person Andrew; 24.10.2012