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
_._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._
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
_._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._