From Kurt.Hornik at wu-wien.ac.at  Mon Aug  2 07:15:38 2004
From: Kurt.Hornik at wu-wien.ac.at (Kurt Hornik)
Date: Mon Aug  2 07:16:24 2004
Subject: [Rd] directing print.packageInfo to a file
In-Reply-To: <20040801200242.EEE5D3984@mprdmxin.myway.com>
References: <20040801200242.EEE5D3984@mprdmxin.myway.com>
Message-ID: <16653.52730.383537.81882@mithrandir.hornik.net>

>>>>> Gabor Grothendieck writes:

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

But file.show() can be tuned by playing with options(pager).

In your case, something like

  oop <- options(pager = function(file, ...) writeLines(readLines(file)))
  capture.output(print.packageInfo(help(package = "stats")),
	         file = "abc.txt")
  options(oop)

gives

R> length(readLines("abc.txt"))
[1] 345

Hth
-k





> 
> 
> Kurt Hornik <Kurt.Hornik@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)
>> }
> 


> _______________________________________________
> No banners. No pop-ups. No kidding.


[Rd] directing print.packageInfo to a file
Kurt Hornik