R로 가져올 때 readMat()를 사용하여 * .mat 파일로 저장된 여러 데이터 구조를 가져올 때 문제가 있습니다.R이 음수의 난수로 바뀌고 있습니다.
R에서 파일을 읽고 열 때 데이터 구조에 저장된 하나의 단일 열의 내용이 (명백히) 무작위로 변경됩니다 (예 : 1504615865460506이어야하며 -1372641510). 또한 원래 * .mat 파일의 숫자는 증가하고 있습니다 (1 번째는 1484649519139343, 2 번째는 1484649519142687 등). R에서는 해당 숫자가 감소합니다 (1 번째는 -1372641510, 2 번째는 -1372633137 등). 다른 변수에는 변경이 일어나지 않습니다.
"wronged"변수는 데이터 포인트가 기록 된 정확한 시간을 나타내는 점진적 숫자 인 TimeStamp입니다. 목록의 일부인 열에 저장되며 더 큰 목록의 일부입니다. 클래스()에 따라 '정수'입니다. readMat() 문서를 읽었습니다. 관련 항목을 찾지 못했습니다. 문제가 많은 경우 옵션 (숫자 = 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.
이
는 3리스트의 구조의 예이다 :# $data
# , , 1
#
# [,1]
# ID "A6001"
# TimePoint "10"
# MainBuffer List,12
# TimeBuffer List,12 #TimeBuffer is the Time Stamp.
TimeBuffer 12 개 시험에 대응하는리스트 (12)를 포함한다. 각 평가판에는 프로세스에서 적절하게 변경되지 않는 1 개의 열이 있습니다.
# 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)
1504615865460506은 R의 유효한 정수 범위를 벗어납니다. 64 비트 정수의 추가 크기를 활용할 수있게 해주는'bit64' 패키지를 확인하십시오. – Mako212
값을 변경하는 것이 "R"인 경우 단순히 정수가 아닌 double 값으로 변환하는 것이 좋습니다. 다른 이상한 일이 일어나고 있다는 사실은 나에게 R.matlab 패키지의 코드가 다른 특정 방식으로 잘못 처리되고 있음을 암시합니다. – joran