我在PerkinElmer LS-50 B上使用FL winlab软件(该设备的经典Perkin Elmer供应商软件)收集3D激发-发射光谱。对于这种模式,该软件显然只允许保存 *.sp文件(来自Perkin Elmer的特定二进制文件),并且每个激励增量保存一个文件。
我想把文件读入R。我找到了一个Mathlab script here,我正在尝试做同样的事情。
第一部分看起来不错我把一个sp example file here
filename <- file.choose()
fid <- file(filename, "rb")
# check if PE file
signature <- readBin(fid,"character",n=4L); print(signature)
description <- readBin(fid, "character", n=40L)
DataSetDataMember= -29828 #this is given by Perkin Elmer
while (!blockID==DataSetDataMember) # find out data block
{
blockID <- readBin(fid,'int', n=1L, size=2) # 16 bits
}
innerCode <- readBin(fid,'int' ,n=1L, size=2)
len <- readBin(fid,'int' ,n=1L, size=4)
那么如果我遵循Mathlab script,我应该做这样的事情:
df <- readBin(fid, 'double', n= len/8, size=8); head(df)
通过收集数据,我知道数据有1列和696行,并在荧光计屏幕上阅读前五行
26.551
22.92912
19.24006
15.62411
13.27673
在我当前的脚本中,我得到了正确数量的数据,但不幸的是没有得到正确的值。我得到的是这样的:
length(df)
696
head(df)
[1] 2.304505e+106 -1.515661e+170 -1.039620e-170 -2.655188e+98 2.632235e-74
我尝试了几种不同的size
组合,但仍然没有得到我应该得到的。不知道问题出在哪里。
1条答案
按热度按时间c3frrgcw1#
double
将恢复它们:在这种情况下,我的建议是用简单的手指练习来测试两种方式的流动,比如这个。