gpt4 book ai didi

r - 如何重命名 R 对象?

转载 作者:行者123 更新时间:2023-12-03 11:37:28 25 4
gpt4 key购买 nike

我正在使用 quantmod 包从雅虎导入金融系列数据。

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

我想将对象“GSPC”的名称更改为“SPX”。我试过 reshape 包中的 rename 函数,但它只改变了变量名。 “GSPC”对象具有向量 GSPC.Open、GSPC.High 等。我希望将“GSPC”重命名为“SPX”以将 GSPC.Open 更改为 SPX.Open 等等。

最佳答案

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

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不再存在,这意味着您在不创建中间副本的情况下真正重命名了对象。

关于r - 如何重命名 R 对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2717757/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com