首页 > 解决方案 > 使用减号删除变量和选择那些想要的变量有什么区别?

问题描述

在 packagedplyr中,使用减号删除变量和选择那些想要的变量有什么区别?

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

那么这两者有什么区别呢?

谢谢你的回答

标签: rdplyr

解决方案


它们本质上是做同一件事的两种方法。在你给出的例子中,结果是一样的。但是,在向 提供附加参数时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)所有列开始,然后添加到那个。” 但是添加没有效果,因为它已经包含在“除”之外的所有列中。所以结果是一样的。fooXYYXselect(foo, -X)

而,select(foo, Y, -X)表示“从列开始Yfoo然后删除列X。” 但是由于您只从 column 开始Y,因此删除X没有效果,因为它已经被排除在外。所以结果是一样的select(foo, Y)


推荐阅读