Есть ли способ сохранить все типы объектов каждого столбца в кадре данных при преобразовании кадра данных в матрицу? - PullRequest
0 голосов
/ 10 июня 2019

Я хотел бы преобразовать фрейм данных в матрицу из R. В фрейме данных содержится более 30 различных переменных с разными типами, некоторые числовые, некоторые коэффициенты и некоторые символы. При преобразовании его в матрицу я бы хотел, чтобы все типы были такими же, как в кадре данных.

Я попытался преобразовать его с помощью as.matrix (), см. Код ниже (это просто простой пример кадра данных только с двумя переменными).

test_df <- data.frame(a = c(1:10), b = c(letters[1:10]))
test_df <- as.matrix(test_df)
typeof(test_df[,1])
typeof(test_df[,2])

Столбец «a» в примере имеет тип integer, а столбец «b» - тип-фактор. Я ожидаю, что каждый столбец будет сохранять свой тип при преобразовании кадра данных в матрицу. Однако когда я преобразую его в матрицу, все переменные преобразуются в символьный тип.

1 Ответ

3 голосов
/ 10 июня 2019

Нет, вы не можете этого сделать. В R матрица должна быть одного типа: она хранится как вектор этого типа вместе с атрибутом, указывающим, сколько у нее строк и столбцов.

Для эффективности вы правы в том, что матрицы работают намного быстрее, чем кадры данных. Может быть, вы можете разделить ваш фрейм данных на один числовой и один символьный. Большинство других типов могут быть приведены к этим типам без особых потерь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...