使用减号删除变量并选择所需的变量之间有什么区别?

时间:2018-12-20 06:00:31

标签: r dplyr

在软件包dplyr中,使用减号删除变量并选择所需的变量之间有什么区别?

例如: K1有6个变量,第一个称为“ id” 我要删除第一个变量。      K2 <- select(K1, -"id")
and K2 <- select(K1, 2:6)

那么这两者有什么区别?

谢谢您的回答

1 个答案:

答案 0 :(得分:1)

从本质上讲,它们是做同一件事的两种方法。在您给出的示例中,结果是相同的。但是,当向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的所有列开始,然后向其中添加Y。”但是添加Y无效,因为它已包含在“ X之外的所有列中”。因此结果与select(foo, -X)相同。

select(foo, Y, -X)的意思是“从Y的列foo开始,然后删除列X。”但是由于您仅从列Y开始,所以删除X无效,因为它已被排除。因此结果与select(foo, Y)相同。