我有一个这样的数据框:
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自动转换为单列选择的向量?
答案 0 :(得分:28)
这个很简单。将, drop = FALSE
附加到您的子集中。
E.g。
df[, c(T, F, F), drop = FALSE]
也适用于矩阵。
答案 1 :(得分:1)
同样没有逗号,即df [c(T,F,F)],返回一个数据帧,但听起来你有新数据帧可以有一列或多列的情况。所以使用上面的drop选项