Как я переименовываю объект R?

Я использую quantmod пакет для импорта финансовых серийных данных Yahoo.

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

Я хотел бы изменить имя объекта "GSPC" к "SPX". Я попробовал переименовать функцию в изменять пакете, но это только меняет имена переменной. Объект "GSPC" имеет векторы GSPC.Open, GSPC.High, и т.д. Я хотел бы, чтобы мое переименование "GSPC" к "SPX" также изменило GSPC.Open на SPX.Open и так далее.

21
задан zx8754 6 September 2019 в 10:57
поделиться

1 ответ

Переименование объекта и имен столбцов в нем - это двухэтапный процесс:

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 больше не существует, то есть вы действительно переименовали объект без создания промежуточных копий.

37
ответ дан 29 November 2019 в 20:51
поделиться
Другие вопросы по тегам:

Похожие вопросы: