[Rd] directing print.packageInfo to a file
Gabor Grothendieck
ggrothendieck at myway.com
Sun Aug 1 22:02:42 CEST 2004
print.packageInfo does not print to the console, it uses file.show.
For example, on R 1.9.1 patched on Windows XP:
> require(chron)
[1] TRUE
> capture.output(print.packageInfo(help(package = chron)), file = "/abc.txt")
NULL
> length(readLines("/abc.txt"))
[1] 0
Kurt Hornik <Kurt.Hornik at wu-wien.ac.at> writes:
>>>>> Gabor Grothendieck writes:
> There was a discussion on r-help of getting the output from
> print.packageInfo into a file. Spencer and I have added a file=
> argument to print.packageInfo for consideration in R. Had this
> been available it would have simplified the answer to that
> thread. If the file= argument is used then the packageInfo
> information is sent to the file specified rather than displayed
> using file.show .
What is wrong with
capture.output(print.packageInfo(x, ...), file = NULL)
for what you want?
-k
> print.packageInfo <- function (x, ..., file = NULL)
> {
> if (!inherits(x, "packageInfo"))
> stop("wrong class")
> outFile <- if (is.null(file))
> tempfile("RpackageInfo")
> else
> file
> outConn <- file(outFile, open = "w")
> vignetteMsg <- paste("Further information is available in the following ",
> "vignettes in directory ", sQuote(file.path(x$path, "doc")),
> ":", sep = "")
> headers <- c("", "Description:\n\n", "Index:\n\n", paste(paste(strwrap
> (vignetteMsg),
> collapse = "\n"), "\n\n", sep = ""))
> footers <- c("\n", "\n", "\n", "")
> formatDocEntry <- function(entry) {
> if (is.list(entry) || is.matrix(entry))
> formatDL(entry, style = "list")
> else entry
> }
> for (i in which(!sapply(x$info, is.null))) {
> writeLines(headers[i], outConn, sep = "")
> writeLines(formatDocEntry(x$info[[i]]), outConn)
> writeLines(footers[i], outConn, sep = "")
> }
> close(outConn)
> if (is.null(file))
> file.show(outFile, delete.file = TRUE, title = paste
> ("Documentation for package",
> sQuote(x$name)))
> invisible(x)
> }
More information about the R-devel
mailing list