如何从data.frame获取每列作为data.frame(而不是vector)?

时间:2012-04-06 19:06:24

标签: r vector dataframe

通常当你得到一个列时,它是一个向量。如何将其保存为具有相同行名和相应列名的data.frame?

3 个答案:

答案 0 :(得分:13)

不是用逗号调用所需的列,即data.frame [,i],而是使用data.frame [i]将类保存为data.frame并保留行名。

data.frame[,i] #As a vector
data.frame[i] #As a data.frame

答案 1 :(得分:5)

使用参数drop = FALSE,如:

mtcars[, 1, drop = FALSE]

答案 2 :(得分:0)

如果在对data.frame进行子集化时指定单个数字,则会得到一列data.frame。这与矩阵子集不同,后者需要“缺少”i参数来返回整个列(然后将其转换为向量)。

# mtcars is a data.frame
mtcars[1]       # first column
str(mtcars[1])  # is still a data.frame
# 'data.frame':   32 obs. of  1 variable:
#  $ mpg: num  21 21 22.8 21.4 18.7 18.1 14.3 24.4 22.8 19.2 ...
# MTCARS is a matrix
MTCARS <- as.matrix(mtcars)
as.matrix(MTCARS)[1]        # only the first element
# [1] 21
str(as.matrix(MTCARS)[,1])  # the first column, as a vector
 Named num [1:32] 21 21 22.8 21.4 18.7 18.1 14.3 24.4 22.8 19.2 ...
 - attr(*, "names")= chr [1:32] "Mazda RX4" "Mazda RX4 Wag" "Datsun 710" ...