Sha*_*ane 37
重命名对象及其中的colnames是一个两步过程:
SPY <- GSPC # assign the object to the new name (creates a copy)
colnames(SPY) <- gsub("GSPC", "SPY", colnames(SPY)) # rename the column names
Run Code Online (Sandbox Code Playgroud)
否则,getSymbols函数允许您不自动分配,在这种情况下,您可以跳过第一步(您仍然需要重命名列).
SPY <- getSymbols("^GSPC", auto.assign=FALSE)
Run Code Online (Sandbox Code Playgroud)
来自@backlin的评论
R采用所谓的懒惰评估.这样做的效果是,当你"复制"时,SPY <- GSPC
你实际上并没有在内存中分配新的空间SPY
.R知道对象是相同的,只有在其中一个被修改时才会在内存中创建一个新副本(即,当它们不再相同时,例如当您更改下一行中的列名时).所以通过做
SPY <- GSPC
rm(GSPC)
colnames(SPY) <- gsub("GSPC", "SPY", colnames(SPY))
Run Code Online (Sandbox Code Playgroud)
你从来没有真正复制GSPC
,只是给它一个新的名字(SPY
),然后告诉R忘记名字(GSPC
).然后,当您更改列名称时,不需要创建新的副本,SPY
因为GSPC
不再存在,这意味着您已经真正重命名了对象而不创建中间副本.