R是把大数变成负随机数

R是把大数变成负随机数,r,import,mat,R,Import,Mat,使用readMat将多个数据结构导入R时出现问题,这些数据结构保存为*.mat文件 当我在R中读取并打开该文件时,数据结构中存储的一列的内容显然是随机变化的,例如应该是15046158654606和-1372641510。此外,原始*.mat文件中的数字在增加,第一个是1484649519139343,第二个是1484649519142687等,而在R中相应的数字在减少,第一个是-1372641510,第二个是-1372633137等。其他变量没有变化 错误的变量是时间戳,这是一个累进的数字,表

使用readMat将多个数据结构导入R时出现问题,这些数据结构保存为*.mat文件

当我在R中读取并打开该文件时,数据结构中存储的一列的内容显然是随机变化的,例如应该是15046158654606和-1372641510。此外,原始*.mat文件中的数字在增加,第一个是1484649519139343,第二个是1484649519142687等,而在R中相应的数字在减少,第一个是-1372641510,第二个是-1372633137等。其他变量没有变化

错误的变量是时间戳,这是一个累进的数字,表示记录数据点的准确时间。它存储在一列中,是列表的一部分,甚至是更大列表的一部分。根据类别,它是“整数”。 我阅读了readMat文档,但没有发现任何相关内容。如果问题是数字太大,我将optionsdigits设置为20,但没有效果

如有任何想法/建议,将不胜感激

我附上我的密码

library(R.matlab)
setwd("C:/Path") 
options(digits=20)
temp = list.files(pattern="*.mat") 
list2env(lapply(setNames(temp, make.names(gsub("*.mat$", "", temp))), readMat), envir = .GlobalEnv) 
rm(temp) 
listAll<-list(mget(ls())) #listAll contains all the *.mat files.



listAll[[1]][[3]] #listAll contains N lists == N of *.mat files. 
TimeBuffer包含12个列表,对应于12个试验。每个试验有一列,这是一个不愿意改变的过程中

# EventBuffer List,12
# Log         List,12
# 
# 
# attr(,"header")
# attr(,"header")$description
# [1] "MATLAB 5.0 MAT-file, Platform: MACI64, Created on: Wed Sep 20 16:03:45 2017                                         "
# 
# attr(,"header")$version
# [1] "5"
# 
# attr(,"header")$endian
# [1] "little"

listAll[[1]][[3]][[1]][[4]][[3]][[1]][1,][1]

#[1] 668725504 (and should be 1480500650907453)
例如,应为15046158654606和is-1372641510

看起来像是溢出错误

从R中的helpinteger:

请注意,R的当前实现使用32位整数作为整数向量,因此可表示整数的范围限制在+/-2*10^9左右:“double’s可以精确地容纳更大的整数


因此,您需要使用较大的类型,例如double来表示所讨论的值。

150461586546506超出了R的有效整数范围。查看bit64包,它允许您利用64位整数的额外大小。如果它只是改变值,我希望它只是将它们转换为双精度,而不是整数。事实上,一些奇怪的事情正在发生,这向我表明R.matlab包中的代码以其他特定的方式错误地处理了它们。谢谢,这就是问题所在。然而,我不认为用readMat可以实现这一点,或者这对我来说太过分了。我尝试使用另一个包rmatio,并使用可选函数read.mat重复循环。现在,数字是正确的!我有我所有的14926864648779232,属于“数字”类。
# EventBuffer List,12
# Log         List,12
# 
# 
# attr(,"header")
# attr(,"header")$description
# [1] "MATLAB 5.0 MAT-file, Platform: MACI64, Created on: Wed Sep 20 16:03:45 2017                                         "
# 
# attr(,"header")$version
# [1] "5"
# 
# attr(,"header")$endian
# [1] "little"

listAll[[1]][[3]][[1]][[4]][[3]][[1]][1,][1]

#[1] 668725504 (and should be 1480500650907453)