假设我在.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'已加载。非常感谢您提供任何帮助(或建议完全避免循环!)
答案 0 :(得分:2)
您可以尝试assign
:
tmp <- get(rename.list[i])
names(tmp) <- ...
assign(rename.list[i], tmp, envir=.GlobalEnv)