Что такое прецедент для
select(iris, everything())
в отличие от, например, просто копирование data.frame?
Что такое прецедент для
select(iris, everything())
в отличие от, например, просто копирование data.frame?
Ищем ссылки на everything
в ?select
, у них есть пример использования для переупорядочения столбцов:
# Reorder variables: keep the variable "Species" in the front
select(iris, Species, everything())
В этом случае столбец Species
перемещается в первый столбец, все столбцы сохраняются, а столбцы не дублируются.
Возможно и другие варианты использования.
Другой пример использования:
# Moves the variable Petal.Length to the end
select(iris, -Petal.Length, everything())
(Я видел это здесь: fooobar.com/info/40757/...)
В любом случае, ответ Грегора и мои меня сбивают с толку - я бы ожидал, что виды будут дублированы в примере Грегора или удалены в моем примере.
Если вы попытаетесь сделать что-то более сложное на основе предыдущих двух примеров, это не сработает:
> dplyr::select(iris, Petal.Width, -Petal.Length, everything())
Petal.Width Sepal.Length Sepal.Width Petal.Length Species
1 0.2 5.1 3.5 1.4 setosa
2 0.2 4.9 3.0 1.4 setosa
3 0.2 4.7 3.2 1.3 setosa
Изменить: После быстрого ответа от hadley на github я обнаружил, что существует особое поведение, использующее все() в сочетании с отрицательным в первой позиции в select(), который запустит select() со всеми переменными, а затем все() снова вернет их обратно. Отрицательная переменная в непервых позициях не работает, как можно было бы ожидать.
Я согласен с тем, что отрицательная переменная в первой позиции и функция all() select_helper должны быть лучше объяснены в документации
Редактирование 2: теперь документация обновлена, чтобы указать "Позитивные значения, выбирающие переменные, отрицательные значения для отбрасывания переменных. Если первое выражение отрицательное, select() будет автоматически запускаться со всеми переменными".