修复R via循环中的xts对象的dimnames(x)

时间:2012-01-11 06:28:51

标签: r xts

假设我在.GlobalEnv中有一个变量列表(类:xts),如下所示:

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

我可以看到为什么发生此错误(使用rename.list上的dimnames调用名称本身而不是xts对象),但不知道如何解决这个问题。尝试使用get

详细说明:

R 2.13 赢7 包'xts'已加载。

非常感谢您提供任何帮助(或建议完全避免循环!)

1 个答案:

答案 0 :(得分:2)

您可以尝试assign

tmp <- get(rename.list[i])
names(tmp) <- ...
assign(rename.list[i], tmp, envir=.GlobalEnv)