Hi all,
I wrote a function (in R batch mode) which reads binary data,
interpolates sometimes and wrote a new binary file of the same size as
the input file. Her is a bit of code:
while (length( head <- readBin(si, integer(), 64, size=2))) {
data <- readBin(si, integer(), head[5], size=2)
## now write head to new file
writeBin(head, so, size=2)
## if head[4] is 9 or 10, interpolate
if(head[4] == 9 | head[4] == 10)
## interpolate data
data <-int(data)
writeBin(data, so, size=2)
}
si and so are the binary in- and output connections, "int()"
interpolates between some data segments and returns a numeric vector
of the same length as the input vector.
However, if the data were interpolated, the execution stops with the
follwing error:
Error in writeBin(data, so, size = 2) : That size is unknown on this machine
Execution halted
This error only occured, if "int()" was called before
writeBin(). int() returns a numeric vector with integers.
With writeBin(data, so) everything works, but this gives the wrong
bytes per element in the byte stream.
Any suggestions?
Thanks, Sven
-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-
r-help mailing list -- Read http://www.ci.tuwien.ac.at/~hornik/R/R-FAQ.html
Send "info", "help", or "[un]subscribe"
(in the "body", not the subject !) To: r-help-request at stat.math.ethz.ch
_._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._
Error in writeBin(object, con, size = 2)
3 messages · Sven Garbade, Brian Ripley
I suspect your interpolation produces numeric not integer vectors. size=2 does not exist for numeric (aka double) vectors. I really don't understand why this was not obvious! How did you expect numeric data to be output in two bytes?
On Mon, 7 Oct 2002, Sven Garbade wrote:
Hi all,
I wrote a function (in R batch mode) which reads binary data,
interpolates sometimes and wrote a new binary file of the same size as
the input file. Her is a bit of code:
while (length( head <- readBin(si, integer(), 64, size=2))) {
data <- readBin(si, integer(), head[5], size=2)
## now write head to new file
writeBin(head, so, size=2)
## if head[4] is 9 or 10, interpolate
if(head[4] == 9 | head[4] == 10)
## interpolate data
data <-int(data)
writeBin(data, so, size=2)
}
si and so are the binary in- and output connections, "int()"
interpolates between some data segments and returns a numeric vector
of the same length as the input vector.
However, if the data were interpolated, the execution stops with the
follwing error:
Error in writeBin(data, so, size = 2) : That size is unknown on this machine
Execution halted
This error only occured, if "int()" was called before
writeBin(). int() returns a numeric vector with integers.
With writeBin(data, so) everything works, but this gives the wrong
bytes per element in the byte stream.
Any suggestions?
Thanks, Sven
-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-
r-help mailing list -- Read http://www.ci.tuwien.ac.at/~hornik/R/R-FAQ.html
Send "info", "help", or "[un]subscribe"
(in the "body", not the subject !) To: r-help-request at stat.math.ethz.ch
_._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._
Brian D. Ripley, ripley at stats.ox.ac.uk Professor of Applied Statistics, http://www.stats.ox.ac.uk/~ripley/ University of Oxford, Tel: +44 1865 272861 (self) 1 South Parks Road, +44 1865 272860 (secr) Oxford OX1 3TG, UK Fax: +44 1865 272595 -.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.- r-help mailing list -- Read http://www.ci.tuwien.ac.at/~hornik/R/R-FAQ.html Send "info", "help", or "[un]subscribe" (in the "body", not the subject !) To: r-help-request at stat.math.ethz.ch _._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._
ripley at stats.ox.ac.uk writes: > I suspect your interpolation produces numeric not integer vectors. size=2 > does not exist for numeric (aka double) vectors. Yes, that was it. > > I really don't understand why this was not obvious! How did you expect > numeric data to be output in two bytes? The unexpected thing was that the data was sometimes numeric and sometimes integer. I need the output in two bytes because of some old DOS programms some of us still use. Bye, Sven >
> On Mon, 7 Oct 2002, Sven Garbade wrote:
>
> > Hi all,
> >
> > I wrote a function (in R batch mode) which reads binary data,
> > interpolates sometimes and wrote a new binary file of the same size as
> > the input file. Her is a bit of code:
> >
> > while (length( head <- readBin(si, integer(), 64, size=2))) {
> > data <- readBin(si, integer(), head[5], size=2)
> > ## now write head to new file
> > writeBin(head, so, size=2)
> > ## if head[4] is 9 or 10, interpolate
> > if(head[4] == 9 | head[4] == 10)
> > ## interpolate data
> > data <-int(data)
> > writeBin(data, so, size=2)
> > }
> >
> > si and so are the binary in- and output connections, "int()"
> > interpolates between some data segments and returns a numeric vector
> > of the same length as the input vector.
> >
> > However, if the data were interpolated, the execution stops with the
> > follwing error:
> >
> > Error in writeBin(data, so, size = 2) : That size is unknown on this machine
> > Execution halted
> >
> > This error only occured, if "int()" was called before
> > writeBin(). int() returns a numeric vector with integers.
> >
> > With writeBin(data, so) everything works, but this gives the wrong
> > bytes per element in the byte stream.
> >
> > Any suggestions?
> > Thanks, Sven
> >
> > -.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-
> > r-help mailing list -- Read http://www.ci.tuwien.ac.at/~hornik/R/R-FAQ.html
> > Send "info", "help", or "[un]subscribe"
> > (in the "body", not the subject !) To: r-help-request at stat.math.ethz.ch
> > _._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._
> >
>
> --
> Brian D. Ripley, ripley at stats.ox.ac.uk
> Professor of Applied Statistics, http://www.stats.ox.ac.uk/~ripley/
> University of Oxford, Tel: +44 1865 272861 (self)
> 1 South Parks Road, +44 1865 272860 (secr)
> Oxford OX1 3TG, UK Fax: +44 1865 272595
>
-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-
r-help mailing list -- Read http://www.ci.tuwien.ac.at/~hornik/R/R-FAQ.html
Send "info", "help", or "[un]subscribe"
(in the "body", not the subject !) To: r-help-request at stat.math.ethz.ch
_._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._