У меня есть кадр данных, состоящий полностью из столбцов integer64
, которые я бы хотел преобразовать в качестве матрицы.Как преобразовать фрейм данных из значений integer64 в матрицу?
library(bit64)
(dfr <- data.frame(x = as.integer64(10^(9:18))))
## x
## 1 1000000000
## 2 10000000000
## 3 100000000000
## 4 1000000000000
## 5 10000000000000
## 6 100000000000000
## 7 1000000000000000
## 8 10000000000000000
## 9 100000000000000000
## 10 1000000000000000000
К сожалению, as.matrix
не дает правильный ответ.
(m <- as.matrix(dfr))
## x
## [1,] 4.940656e-315
## [2,] 4.940656e-314
## [3,] 4.940656e-313
## [4,] 4.940656e-312
## [5,] 4.940656e-311
## [6,] 4.940656e-310
## [7,] 4.940656e-309
## [8,] 5.431165e-308
## [9,] 5.620396e-302
## [10,] 7.832953e-242
Проблема, кажется, что integer64
значения хранятся в виде числовых значений с «integer64» атрибута класса (плюс некоторые магии сделать их печать и выполнять арифметические действия правильно), который получает раздели as.matrix
.
Я не могу просто сделать class(m) <- "integer64"
, потому что это изменяет класс объекта матрицы, а не его содержимое.
Аналогичным образом, mode(m) <- "integer64"
дает неправильный ответ и typeof(m) <- "integer64"
и storage.mode(m) <- "integer64"
ошибки ввода.
Конечно, я мог бы просто обойти проблему, преобразовывая столбцы в двойное (dfr$x <- as.double(dfr$x)
), но похоже, что это должен быть способ сделать это правильно.
Как получить матрицу значений integer64
?
Возможно, вы направляетесь вниз темный путь: если все * функции * вы собираетесь подавать свою матрицу, чтобы иметь методы «integer64», вы все равно в конечном итоге все равно сходитесь к удвоениям. Имеет ли пакет 'bit64' набор соответствующих методов, и в этом случае у него есть некоторый инструмент' as.matrix64'? Если нет, вы можете также преобразовать в двойные или, возможно, использовать пакеты 'gmp' и' Rmpfr'. ETA: слово «матрица» даже не отображается в файле справки для «бит64», поэтому я думаю, вам придется придерживаться данных и доступных для этого методов. –
@CarlWitthoft, но ох смотреть на блестящий шар, отскакивающий в темные, запутанные леса, из которых нет надежды на возвращение, может быть, я должен пойти преследовать его. –