防止单列自动转换为矢量

时间:2012-05-24 12:25:21

标签: r dataframe

我有一个这样的数据框:
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自动转换为单列选择的向量?

2 个答案:

答案 0 :(得分:28)

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

E.g。

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

也适用于矩阵。

答案 1 :(得分:1)

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