library("R.utils")
pathname <- tempfile()
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
# Local functions
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
writeString <- function(s, file) {
raw <- charToRaw(s)
writeBin(raw, con=file)
if (is.character(file)) {
# Sanity check
stopifnot(file.info(file)$size == length(raw))
}
} # writeString()
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
# Empty file
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
cat("", file=pathname)
# Sanity check
stopifnot(file.info(pathname)$size == 0L)
n <- countLines(pathname)
stopifnot(n == 0L)
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
# File with one line
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
# File: Ending with a new line
writeString("Hello world!\n", file=pathname)
n <- countLines(pathname)
stopifnot(n == 1L)
# File: Last line does not end with a new line
writeString("Hello world!", file=pathname)
n <- countLines(pathname)
stopifnot(n == 1L)
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
# Files with multiple lines
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
bfr <- letters[1:9]
# File: All lines ending with a new line
writeString(paste(c(bfr, ""), collapse="\n"), file=pathname)
n <- countLines(pathname)
stopifnot(n == length(bfr))
# File: Last line does not end with a new line
writeString(paste(bfr, collapse="\n"), file=pathname)
n <- countLines(pathname)
stopifnot(n == length(bfr))
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
# Counting either CR, LF, or CRLF
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
for (newline in c("\r", "\n", "\r\n")) {
cat("Newline sequence:\n")
str(newline)
writeString(paste(bfr, collapse=newline), file=pathname)
# Reading from file
n <- countLines(pathname)
stopifnot(n == length(bfr))
# Reading from connection
con <- file(pathname, open="rb")
n <- countLines(con)
close(con)
stopifnot(n == length(bfr))
}
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
# Compressed files
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
pathnameGZ <- sprintf("%s.gz", pathname)
for (newline in c("\r", "\n", "\r\n")) {
cat("Newline sequence:\n")
str(newline)
con <- gzfile(pathnameGZ, open="wb")
writeString(paste(bfr, collapse=newline), file=con)
close(con)
# Reading from file
n <- countLines(pathnameGZ)
stopifnot(n == length(bfr))
print(n)
# Reading from connection
con <- gzfile(pathname, open="rb")
n <- countLines(con)
close(con)
print(n)
stopifnot(n == length(bfr))
}
# Cleanup
file.remove(pathnameGZ)
file.remove(pathname)
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.