gpt4 book ai didi

r - Integer64 类无法在 reshape2 熔体函数中幸存

转载 作者:行者123 更新时间:2023-12-03 00:29:15 24 4
gpt4 key购买 nike

我不知道这是一个integer64(来自bit64)问题,还是一个熔化问题(来自reshape2),但是如果我尝试 reshape 包含 integer64 数据的 data.frame,然后类信息在此过程中被破坏,并恢复为 double 表示:

library(bit64)
library(reshape2)

DF = data.frame(I =letters, Num1 = as.integer64(1:26), Num2 = as.integer64(1:26))
DFM = melt(DF, id.vars = "I")

sapply(DF, class)
sapply(DFM, class)

给出:

> sapply(DF, class)
I Num1 Num2
"factor" "integer64" "integer64"
> sapply(DFM, class)
I variable value
"factor" "factor" "numeric"

由于integer64在下面是double,所以数据被“损坏”

> DF
I Num1 Num2
1 a 1 1
2 b 2 2
3 c 3 3
4 d 4 4
5 e 5 5
...
> DFM
I variable value
1 a Num1 4.940656e-324
2 b Num1 9.881313e-324
3 c Num1 1.482197e-323
4 d Num1 1.976263e-323
5 e Num1 2.470328e-323
6 f Num1 2.964394e-323

这是什么原因造成的?这是 integer64 问题还是 melt 问题?创建类时可以做什么来避免这种事情?

最佳答案

这似乎是该软件包的限制,在其文档 here on page 9 中也提到了这一点。例如:

x <- data.frame(a=as.integer64(1:5), b=as.integer64(1:5))
> x
# a b
# 1 1 1
# 2 2 2
# 3 3 3
# 4 4 4
# 5 5 5

> unlist(x)

# a1 a2 a3 a4 a5 b1
# 4.940656e-324 9.881313e-324 1.482197e-323 1.976263e-323 2.470328e-323 4.940656e-324
# b2 b3 b4 b5
# 9.881313e-324 1.482197e-323 1.976263e-323 2.470328e-323

> as.matrix(x)
# a b
# [1,] 4.940656e-324 4.940656e-324
# [2,] 9.881313e-324 9.881313e-324
# [3,] 1.482197e-323 1.482197e-323
# [4,] 1.976263e-323 1.976263e-323
# [5,] 2.470328e-323 2.470328e-323

x <- as.integer64(1:5)

> is.vector(x)
# [1] FALSE

> as.vector(x)
# [1] 4.940656e-324 9.881313e-324 1.482197e-323 1.976263e-323 2.470328e-323

关于r - Integer64 类无法在 reshape2 熔体函数中幸存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14892857/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com