如何重命名R对象?

时间:2010-04-26 23:46:11

标签: r rename

我正在使用quantmod包从Yahoo进口金融系列数据。

library(quantmod)
getSymbols("^GSPC")
[1] "GSPC"

我想将对象“GSPC”的名称更改为“SPX”。我在reshape包中尝试了重命名功能,但它只更改了变量名。 “GSPC”对象有向量GSPC.Open,GSPC.High等。我想将“GSPC”重命名为“SPX”,也将GSPC.Open改为SPX.Open等。

1 个答案:

答案 0 :(得分:33)

重命名对象及其中的共同名称是一个两步过程:

SPY <- GSPC # assign the object to the new name (creates a copy)
colnames(SPY) <- gsub("GSPC", "SPY", colnames(SPY)) # rename the column names

否则,getSymbols函数允许您自动分配,在这种情况下,您可以跳过第一步(您仍然需要重命名列)。

SPY <- getSymbols("^GSPC", auto.assign=FALSE)

来自@backlin的评论

R采用所谓的懒惰评估。这样做的结果是,当您“复制”SPY <- GSPC时,实际上并没有为SPY在内存中分配新空间。 R知道对象是相同的,只有在其中一个被修改时才在内存中创建一个新副本(当它们不再相同时,例如当你改变时以下行中的列名称)。所以通过做

SPY <- GSPC
rm(GSPC)
colnames(SPY) <- gsub("GSPC", "SPY", colnames(SPY))

你永远不会真正复制GSPC,只是给它一个新名称(SPY),然后告诉R忘记名字(GSPC)。然后,当您更改列名称时,您不需要创建SPY的新副本,因为GSPC不再存在,这意味着您已经真正重命名了对象而没有创建中间副本。