Почему изменение порядка превращает фреймы данных с одним столбцом в векторы?

#r

#r

Вопрос:

Мне просто любопытно, почему переупорядочивание фрейма данных с одним столбцом (или матрицы) преобразует его в вектор. Есть ли для этого какая-либо причина?

 k <- data.frame(a=c(2,10,3), b=c(8,3,9))
k <- k[order(k[,1]),]
class(k)
# [1] "data.frame"

k <- data.frame(a=c(2,10,3))
k <- k[order(k[,1]),]
class(k)
# [1] "numeric"
 

Ответ №1:

Посмотрите ?'[' , в частности, на drop аргумент

 drop: For matrices and arrays.  If ‘TRUE’ the result is coerced to
      the lowest possible dimension (see the examples).  This only
      works for extracting elements, not for the replacement.  See
      ‘drop’ for further details.
 

Чтобы ответить на ваш вопрос, вы хотите

 k[order(k[,1]), , drop=FALSE]
 

Комментарии:

1. Спасибо! Это мой второй вопрос с ответом в этом справочном документе. Я должен это прочитать!