Я использую quantmod пакет для импорта финансовых серийных данных Yahoo.
library(quantmod)
getSymbols("^GSPC")
[1] "GSPC"
Я хотел бы изменить имя объекта "GSPC" к "SPX". Я попробовал переименовать функцию в изменять пакете, но это только меняет имена переменной. Объект "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
больше не существует, то есть вы действительно переименовали объект без создания промежуточных копий.