Во-первых, важно отметить, что они отличаются друг от друга тем, что gc
не удаляет любые переменные , которые вы все еще используете, - только освобождает память для тех, более длинный доступ к (удаленный с помощью rm()
или, скажем, создан в функции, которая с тех пор вернулась). Запуск gc()
никогда не заставит вас потерять переменные.
Вопрос о том, следует ли вам называть gc()
после вызова rm()
, тем не менее, является хорошим. Документация для gc помогает:
Вызов gc вызывает сбор мусора. Это также будет происходить автоматически без вмешательства пользователя, и основная цель вызова gc - для отчета об использовании памяти.
Однако, может быть полезно вызвать gc после удаления большого объекта, так как это может побудить R вернуть память в операционную систему.
blockquote>Таким образом, ответ заключается в том, что полезно называть
gc()
(и, по крайней мере, не повредить), даже если он, вероятно, будет запущен в любом случае (если не сразу, то скоро).
С помощью структуры данных вашего формата вы можете запустить ARIMA следующим образом:
# making the structure
TeamScores <- structure(list(
Team = c("Abl Christian", "Air Force", "Akron", "Abl Christian", "Air Force", "Akron","Abl Christian", "Air Force", "Akron","Abl Christian", "Air Force", "Akron","Abl Christian", "Air Force", "Akron","Abl Christian", "Air Force", "Akron","Abl Christian", "Air Force"),
Score = c(71.7, 67.4, 68.4, 60.6, 71.8, 65.6, 66.8, 60.3, 72, 77.3, 73.6, 70.9, 77.8, 65.3, 75.5, 72.8, 70.2, 78.9, 80.1, 74.1),
Year = structure(
c(17532, 17533, 17534, 17535, 17536, 17537, 17538, 17539, 17540, 17541, 17542, 17543, 17544, 17545, 17546, 17547, 17548, 17549, 17550, 17551),
class = "Date")),
row.names = c(NA, -20L),
class = c("tbl_df", "tbl", "data.frame"))
# make a vector with team names:
teamnames <- c("Abl Christian", "Air Force", "Akron")
# run ARIMA for each team:
for (team in teamnames){
subdf <- subset(TeamScores, Team==team)
fit <- auto.arima(subdf$Score,xreg=subdf$Year)
print(fit)}
P.S. Я не смог запустить arima с вашим примером кода / данных, потому что в этом примере все даты одинаковы (2018-01-01), и каждая группа присутствует только один раз, и вы не можете реально создать временной ряд с одним временным интервалом. ни одно назначение данных на группу. Таким образом, я сделал похожую структуру для тестирования. Также я пропустил создание объекта ts
и запустил ARIMA непосредственно на фрейме данных.