Предотвращение автоматического преобразования одного столбца в вектор

У меня есть такой кадр данных:
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 делать это автоматическое преобразование в вектор для выделения из одного столбца?

Ответ 1

Это довольно просто. Добавьте , drop = FALSE к вашему подмножеству.

например.

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

Также работает для матриц.

Ответ 2

Также без запятой, т.е. df [c (T, F, F)], возвращает фрейм данных, но похоже, что у вас есть случаи, когда новый фреймворк может иметь один или несколько столбцов. Поэтому используйте опцию drop выше