присоединяет/отсоединяется (SIC) не работает, как ожидалось
Как отметил Joran и BondedDust, используя attach
всегда плохая идея, потому что это вызывает глупые, непонятные ошибки как вы нашли.
называющие dataframes с одиночными буквами
Не делайте этого, либо! Дайте вам переменные значащие имена, чтобы ваш код был легче понять, когда вы вернетесь к нему через шесть месяцев.
Если ваша проблема в том, что вам не нравится, повторно вводить имя фрейма данных для доступа столбцов, а затем использовать функции с особой оценки, которые позволяют избежать этой потребности.
Например,
some_sample_data <- data.frame(x = 1:10, y = runif(10))
Подменю
Повторный набор текста, тяжелая работа:
some_sample_data[some_sample_data$x > 3 & some_sample_data$y > 0.5, ]
Легче альтернативы с помощью subset
:
subset(some_sample_data, x > 3 & y > 0.5)
Изменение порядка
Многократное типирование, тяжелая работа:
order_y <- order(some_sample_data$y)
some_sample_data[order_y, ]
Легче использованием arrange
из plyr
:
arrange(some_sample_data, y)
Преобразуя
Повторные ввод, ха й работа:
some_sample_data$z <- some_sample_data$x + some_sample_data$y
Легче использование with
, within
или mutate
(последняя один из plyr
):
some_sample_data$z <- with(some_sample_data, x + y)
some_sample_data <- within(some_sample_data, z <- x + y)
some_sample_data <- mutate(some_sample_data, z = x + y)
Моделирование
Как отмечал MrFlick, многие функции, в частности, моделирующие функции , имеют аргумент data
, который позволяет избежать повторения имени данных.
повтором типирование, тяжелая работа:
lm(some_sample_data$y ~ some_sample_data$x)
Использование аргумента данных:
lm(y ~ x, data = some_sample_data)
Вы можете увидеть все функции в пакете статистики, которые имеют аргумент данных с помощью:
library(sig)
stats_sigs <- list_sigs(pkg2env(stats))
Filter(function(fn) "data" %in% names(fn$args), stats_sigs)
Вы, безусловно, не должны использовать attach(); это обычно рецепт путаницы. – joran
НИКОГДА НЕ ИСПОЛЬЗУЙТЕ ПРИНЦИП! Не доверяйте книгам, которые его используют. –
Причина, по которой вам не требуется attach(), заключается в том, что часто многие команды (например, 'lm') имеют аргумент' data = ', где вы можете передать имя data.frame, а R будет разрешать переменные в вашей формуле в пределах этого data.frame, или вы можете использовать функцию типа 'with()', чтобы избежать повторного ввода имени data.frame много раз. По крайней мере, обязательно используйте 'detach()', чтобы удалить каждый файл data.frame you 'attach()', как только вы закончите с ним. – MrFlick