Ответ 1
Это довольно просто. Добавьте , drop = FALSE
к вашему подмножеству.
например.
df[, c(T, F, F), drop = FALSE]
Также работает для матриц.
У меня есть такой кадр данных: 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 делать это автоматическое преобразование в вектор для выделения из одного столбца?
Это довольно просто. Добавьте , drop = FALSE
к вашему подмножеству.
например.
df[, c(T, F, F), drop = FALSE]
Также работает для матриц.
Также без запятой, т.е. df [c (T, F, F)], возвращает фрейм данных, но похоже, что у вас есть случаи, когда новый фреймворк может иметь один или несколько столбцов. Поэтому используйте опцию drop выше