这有效:
mtcars[, c("mpg"), drop = F]
mpg
Mazda RX4 21.0
Mazda RX4 Wag 21.0
Datsun 710 22.8
Hornet 4 Drive 21.4
Hornet Sportabout 18.7
Valiant 18.1
Duster 360 14.3
Merc 240D 24.4
Merc 230 22.8
Merc 280 19.2
Merc 280C 17.8
Merc 450SE 16.4
Merc 450SL 17.3
Merc 450SLC 15.2
Cadillac Fleetwood 10.4
Lincoln Continental 10.4
Chrysler Imperial 14.7
Fiat 128 32.4
Honda Civic 30.4
Toyota Corolla 33.9
Toyota Corona 21.5
Dodge Challenger 15.5
AMC Javelin 15.2
Camaro Z28 13.3
Pontiac Firebird 19.2
Fiat X1-9 27.3
Porsche 914-2 26.0
Lotus Europa 30.4
Ford Pantera L 15.8
Ferrari Dino 19.7
Maserati Bora 15.0
Volvo 142E 21.4
Run Code Online (Sandbox Code Playgroud)
但这并不:
mtcars[, -c("mpg"), drop = F]
Error in -c("mpg") : invalid argument to unary operator
Run Code Online (Sandbox Code Playgroud)
你不能将字符串设置为负数。-"mpg"
导致错误。(-
是一个一元运算符,因为它只接受一个参数。-x
尝试取x
负数,但x
必须是数字,否则您会收到此错误。有一些函数允许您-
在列名上使用,例如base::subset
and dplyr::select
,但它们只由于在引擎盖下进行了特殊处理而工作。)
如果您想从原始数据中删除该列,分配NULL
效果很好:
mtcars[["mpg"]] <- NULL
Run Code Online (Sandbox Code Playgroud)
要复制没有列的数据,setdiff
建议是好的:
mtcars[, setdiff(names(mtcars), "mpg"), drop = FALSE]
Run Code Online (Sandbox Code Playgroud)