22

私はこのようなデータフレームを持っています:
df = data.frame(a=1:3, b=2:4, c=3:5)

次のようなものを使用して、そのデータフレームから列を選択しています。
df[, c(T, F, T)]

返される列が少なくとも2つある限り、これは正常に機能します。しかし、私がこれを行う場合、例えば:
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)]はデータフレームを返しますが、新しいデータフレームに1つ以上の列を含めることができる場合があるようです。したがって、上記のドロップオプションを使用してください

于 2012-05-24T13:23:49.090 に答える