当仅仅询问一个变量对data.frame
进行子集化时,我们得到一个向量。这就是我们要求的,所以这并不奇怪。但是,在其他情况下(如果我们要求多一列),我们会得到一个data.frame对象。例如:
> data <- data.frame(a=1:10, b=letters[1:10])
> str(data)
'data.frame': 10 obs. of 2 variables:
$ a: int 1 2 3 4 5 6 7 8 9 10
$ b: Factor w/ 10 levels "a","b","c","d",..: 1 2 3 4 5 6 7 8 9 10
> data <- data[, "b"]
> str(data)
Factor w/ 10 levels "a","b","c","d",..: 1 2 3 4 5 6 7 8 9 10
如果我需要data
对象不改变data.frame
的类型,无论它只有一个变量,我该怎么做?我唯一想到的是:
data <- data[, "a"]
data <- as.data.frame(data)
......但这似乎非常多余。有没有更好的方法,即一种说法&#34;保持data.frame
的方式,只需给我一个专栏&#34;?
问题在于我需要:
data.frames
。答案 0 :(得分:7)
最好是使用列表子集。所有这些都将返回data.frame:
data['a']
data[c('a')]
data[c('a', 'b')]
使用矩阵子集,您必须添加drop = FALSE
:
data[, 'a', drop = FALSE]