Вы можете подмножество, используя вектор имен столбцов. Я настоятельно предпочитаю этот подход тем, которые обрабатывают имена столбцов, как если бы они были именами объектов (например, subset()
), особенно при программировании в функциях, пакетах или приложениях.
# data for reproducible example
# (and to avoid confusion from trying to subset `stats::df`)
df <- setNames(data.frame(as.list(1:5)), LETTERS[1:5])
# subset
df[c("A","B","E")]
Обратите внимание, что запятой нет (т.е. это не df[,c("A","B","C")]
). Это потому, что df[,"A"]
возвращает вектор, а не фрейм данных. Но df["A"]
всегда будет возвращать фрейм данных.
str(df["A"])
## 'data.frame': 1 obs. of 1 variable:
## $ A: int 1
str(df[,"A"]) # vector
## int 1
Спасибо Дэвиду Дорчису за указание из того, что df[,"A"]
возвращает вектор вместо data.frame, и Антуану Фабри для предложения лучшей альтернативы (см. выше ) к моему исходному решению (ниже).
# subset (original solution--not recommended)
df[,c("A","B","E")] # returns a data.frame
df[,"A"] # returns a vector
person
Joshua Ulrich
schedule
10.04.2012