[R] Show only header of str() function

Avi Gross @v|gro@@ @end|ng |rom ver|zon@net
Thu Sep 2 18:32:56 CEST 2021


Thanks for the interesting method Rui. So that is a way to do a redirect of output not to a sinkfile but to an in-memory variable as a textConnection.

Of course, one has to wonder why the makers of str thought it would be too inefficient to have an option that returns the output in a form that can be captured directly, not just to the screen. 

I have in the past done odd things such as using sink() to capture the output of a program that wrote another program dynamically in a loop. The saved file could then be used with source(). So a similar technique can capture the output from str() or cat() or whatever normally only writes to the screen and then the file can be read in to get the first line or whatever you need. I have had to play games to get the right output from some statistical programs too as it was assumed the user would read it, and sometimes had to cherry pick what I needed directly from withing the underlying object.

I suspect one reason R has so many packages including the tidyverse I like to use, is because the original R was designed in another time and in many places is not very consistent. I wonder how hard it would be to change some programs to simply accept an additional argument like sink() has where you can say split=TRUE and get a copy of what is being diverted to also come to the screen. I find cat() to be a very useful way to put more complicated output together than say print() but since it does not allow capture of the text into variables, I end up having to use other methods such as the glue() function or something like print(sprint("Hello %s, I have %d left.\n", "Brian", 5))

But you work with what you have. Your solution works albeit having read the function definition, is quite a bit of overkill when I read the code as it does things not needed. But as noted, if efficiency matters and you are only looking at data.frame style objects, there are cheaper solutions.


-----Original Message-----
From: R-help <r-help-bounces using r-project.org> On Behalf Of Rui Barradas
Sent: Thursday, September 2, 2021 7:31 AM
To: Luigi Marongiu <marongiu.luigi using gmail.com>; r-help <r-help using r-project.org>
Subject: Re: [R] Show only header of str() function

Hello,

Not perfect but works for data.frames:


header_str <- function(x){
   capture.output(str(x))[[1]]
}
header_str(iris)
header_str(AirPassengers)
header_str(1:10)


Hope this helps,

Rui Barradas

Às 12:02 de 02/09/21, Luigi Marongiu escreveu:
> Hello, is it possible to show only the header (that is: `'data.frame':
> x obs. of  y variables:` part) of the str function?
> Thank you
>

______________________________________________
R-help using r-project.org mailing list -- To UNSUBSCRIBE and more, see https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.



More information about the R-help mailing list