Есть много способов присвоить переменную и т. Д., И лучший из них будет зависеть от личного вкуса.Тем не менее, пара моментов:
Вы не хотите быть attach()
ничего.Он будет хорошо работать 9 раз из 10, а затем кусает вас в задницу, когда вы этого не ожидаете, потому что все, что вы делаете, это помещаете копию вашего объекта в путь поиска.Измените исходный объект, и объект в пути поиска не изменится для соответствия.
Лично мне не нравится доступ к вещам с $
в общем использовании.Это уродливо и порождает у пользователей тенденцию просто копаться в объектах и вырывать вещи по своему усмотрению.Не имеет большого значения для ваших данных, но когда я вижу, что люди делают model$residuals
, я волнуюсь.Есть лучшие способы (в данном случае resid()
).Некоторые пользователи также загадывают формулы своих моделей с помощью $
.
Если вы пишете сценарии для анализа данных, к которым вы можете вернуться спустя месяцы или годы, то все, что может помочь вам понять, что делает ваш код, таково:бесценный бонус на мой взгляд.Я нахожу with()
и within()
полезными для той проблемы, с которой вы столкнулись, потому что они явно о том, что вы хотите сделать.
Это яснее:
x <- data.frame(X = rnorm(10))
with(x, mean(X))
x <- within(x, Y <- rpois(10, 3))
, чем
x <- data.frame(X = rnorm(10))
mean(x$X)
x$Y <- rpois(10, 3)
## or
x["Y"] <- rpois(10, 3)
Даже если они делают одно и то же.
assign()
внутри within()
вызова - это просто трата текста, не так ли?