R 使用减号删除变量和选择想要的变量之间有什么区别?

R 使用减号删除变量和选择想要的变量之间有什么区别?,r,dplyr,R,Dplyr,在包dplyr中,使用减号删除变量和选择想要的变量之间有什么区别 例如: K1有6个变量,第一个称为id 我想删除第一个变量。 K2它们本质上是做同一件事的两种方式。在你给出的例子中,结果是一样的。但是,当提供额外的参数来选择时,如果第一个参数使用减号,则会产生差异。从帮助中: 如果第一个表达式为负数,select将自动以所有变量开始 所以,这些例子都给出了相同的结果 library(dplyr) foo <- data.frame(X = c(1,2,3),

在包dplyr中,使用减号删除变量和选择想要的变量之间有什么区别

例如: K1有6个变量,第一个称为id 我想删除第一个变量。
K2它们本质上是做同一件事的两种方式。在你给出的例子中,结果是一样的。但是,当提供额外的参数来选择时,如果第一个参数使用减号,则会产生差异。从帮助中:

如果第一个表达式为负数,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
基本上,选择foo,-X,Y意味着从foo中除X以外的所有列开始,然后向其中添加Y。但是添加Y没有效果,因为它已经包含在除X之外的所有列中。因此结果与selectfoo,-X相同


然而,selectfoo,Y,-X意味着从foo中以Y列开始,然后删除X列。但由于您仅以Y列开始,删除X没有任何效果,因为它已被排除。因此,结果与selectfoo,Y相同。

就输出而言,两者没有区别。这只是做同样事情的另一种方式。顺便说一句,您不需要引号selectK1,-id也应该可以使用。另外,您可能已经在%>%管道中创建了一个新的临时变量,并希望在退出之前将其删除。在这种情况下,使用减号更容易。语法上的糖。
select(foo, -X, Y) # Retains columns Y and Z
select(foo, Y, -X) # Retains column Y