22

我有一个这样的数据框:
df = data.frame(a=1:3, b=2:4, c=3:5)

我正在使用类似的东西从该数据框中选择列:
df[, c(T, F, T)]

只要至少有两列要返回,这就可以正常工作;但是,如果我这样做,例如:
df[, c(T, F, F)]

...我突然只得到一个向量而不是一个data.frame。

通常这会很好(甚至是需要的),但是由于我需要稍后将结果作为 data.frame ,这完全弄乱了我的脚本。

有没有办法阻止 R 自动转换为单列选择的向量?

4

2 回答 2

43

这个很简单。附加, drop = FALSE到您的子集。

例如

df[, c(T, F, F), drop = FALSE]

也适用于矩阵。

于 2012-05-24T12:29:23.343 回答
1

也没有逗号,即 df[c(T,F,F)],返回一个数据帧,但听起来你有新数据帧可以有一个或多个列的情况。所以使用上面的 drop 选项

于 2012-05-24T13:23:49.090 回答