I already suggested using the pager as a workaround in the original thread although your pager workaround has the advantage of being 100% in R while mine used a batch file which defined a new pager.
Note that R already supports options(pager = "console") but if you do this then it seems that capture.output still won't capture it. Thus one alternative solution would be to get capture.output to work with pager = "console" and modify print.packageInfo to take a pager= argument which it would pass down to file.show. (file.show already has a pager argument.) Then one could write: capture.output( print.packageInfo(help(package = chron), pager = "console"), file = "myfile.txt") That gets it down to one line although it still seems unnecessarily indirect when one could just write: print.packageInfo(help(package = chron), file = "myfile.txt") if print.packageInfo just had a file= argument. Furthermore, print.packageInfo ALREADY creates the file as a temporary file to hand over to file.show so its not much of a stretch to give the user access to what it is already creating anyway. From: Kurt Hornik <[EMAIL PROTECTED]> >>>>> 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 <[EMAIL PROTECTED]> 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) >> } > ______________________________________________ [EMAIL PROTECTED] mailing list https://www.stat.math.ethz.ch/mailman/listinfo/r-devel