По сути, это два способа сделать одно и то же.В приведенных вами примерах результат точно такой же.Но при предоставлении дополнительных аргументов select
имеет значение, если первый аргумент использует знак минус.Из справки:
Если первое выражение отрицательное, select () автоматически запустится со всеми переменными.
Итак, все эти примеры дают одинаковый результат.
library(dplyr)
foo <- data.frame(X = c(1,2,3),
Y = c(4,5,6),
Z = c(7,8,9))
select(foo, -X) # Retains columns Y and Z
select(foo, Y, Z) # Retains columns Y and Z
select(foo, -1) # Retains columns Y and Z
select(foo, 2:3) # Retains columns Y and Z
Но они дают разные результаты:
select(foo, -X, Y) # Retains columns Y and Z
select(foo, Y, -X) # Retains column Y
По сути, select(foo, -X, Y)
означает «Начать со всех столбцов foo
, кроме X
, а затем добавить * 1017».* к этому."Но добавление Y
не имеет никакого эффекта, поскольку оно уже было включено в «все столбцы, кроме X
».Таким образом, результат такой же, как select(foo, -X)
.
. Принимая во внимание, что select(foo, Y, -X)
означает «Начать со столбца Y
с foo
, а затем удалить столбец X
».Но поскольку вы только начали со столбца Y
, удаление X
не имеет никакого эффекта, поскольку оно уже было исключено.Таким образом, результат такой же, как select(foo, Y)
.