On Thu, 26 Feb 2004 19:31:15 +0000 (GMT), Prof Brian Ripley <[EMAIL PROTECTED]> wrote :
>On Thu, 26 Feb 2004, Duncan Murdoch wrote: >> One way to solve this problem would be to create a connection that did >> nothing except keep track of a file position, then do the save to that >> connection. However, it's not easy to define new connection types. >> Might be a nice package to write to allow such a thing. > >I don't think it is worth it. Just use an anonymous file connection and >seek to the end to measure the length. (Similar to Luke's use of a pipe, >but more portable.) I didn't mean to write a package to count bytes, I meant to write a package that allowed for user-defined connections. The various functions (read, write, seek, etc.) needed by the connection would be supplied by the user in R code. Then you'd do something like this for the special case of counting bytes: count <- 0 countbytes <- function(num, bytes) { count <<- count + num } f <- userconnection(write=countbytes) save(list=ls(all=TRUE),file=f) cat('Byte count is ',count) Other possible connections you might want: Circular connections that cycle through a buffer of bytes again and again. Encrypting connections which do something to the bytes on their way to another connection. Compressing connections which compress or uncompress another connection. Bit-level connections that let you read or write one bit at a time. Concatenating connections that join two inputs to make them look like a single stream. Limiting connections that only show the caller a subset of the stream, within a certain byte range. Connections that calculate a checksum or CRC on the bytes as they pass through. Many years ago I wrote a Turbo Pascal unit containing all of these things for "streams", the TP equivalent of connections, and it ended up being surprisingly useful. Duncan Murdoch ______________________________________________ [EMAIL PROTECTED] mailing list https://www.stat.math.ethz.ch/mailman/listinfo/r-devel