У вас есть несколько вариантов.
Во-первых, поскольку вы используете subset
, вы можете указать аргумент drop=TRUE
, но см. предупреждение далее в этом ответе):
subset(mtcars, cyl=='6', select=mpg, drop=TRUE)
[1] 21.0 21.0 21.4 18.1 19.2 17.8 19.7
Но в долгосрочной перспективе вам следует ознакомиться с операторами подмножества R [
, [[
и $
:
mtcars[mtcars$cyl==6, "mpg"]
[1] 21.0 21.0 21.4 18.1 19.2 17.8 19.7
И вы можете упростить эту последнюю строку кода, используя функцию with
(но, опять же, см. предупреждение):
with(mtcars, mtcars[cyl==6, "mpg"])
[1] 21.0 21.0 21.4 18.1 19.2 17.8 19.7
Предупреждение. Некоторые аспекты subset
и with
могут считаться вредными. Все объекты сначала оцениваются в контексте фрейма данных. Таким образом, если вы используете переменную с тем же именем, что и столбец в вашем фрейме данных, ваше выражение будет оценивать имя столбца, а не вашу переменную:
with(mtcars,mtcars[cyl==6,"mpg"])
[1] 21.0 21.0 21.4 18.1 19.2 17.8 19.7
gear <- 6
with(mtcars,mtcars[cyl==gear,"mpg"])
[1] 22.8 24.4 22.8 32.4 30.4 33.9 27.3 21.4
subset(mtcars, cyl==gear, select=mpg, drop=TRUE)
[1] 22.8 24.4 22.8 32.4 30.4 33.9 27.3 21.4
Вызов with
и subset
получил gear
из фрейма данных, а не из того, где вы установили для него значение 6.
29.07.2012