在软件包dplyr
中,使用减号删除变量并选择所需的变量之间有什么区别?
例如:
K1有6个变量,第一个称为“ id”
我要删除第一个变量。
K2 <- select(K1, -"id")
and
K2 <- select(K1, 2:6)
那么这两者有什么区别?
谢谢您的回答
答案 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)
相同。