Daniel Ezra Johnson
2008-Aug-10 12:00 UTC
[R] print data frames without row names (within a list)
This should be an easy one, but I could not find the answer in the obvious places. one <- data.frame(a=c(1,2,3),b=c("x","y","z")) two <- data.frame(a=c(4,5,6),b=c("q","r","s"))> print(one)a b 1 1 x 2 2 y 3 3 z> print(one,row.names=F)a b 1 x 2 y 3 z So far, so good, but how do I do this if the data frames are bound into a list?> three <- list(one,two) > print(three,row.names=F) #same as print(three,row.names=T)[[1]] a b 1 1 x 2 2 y 3 3 z [[2]] a b 1 4 q 2 5 r 3 6 s Is there any way to stop the row (or column) names from printing in a case like this? I just thought of one way - change the default in print.data.frame() and reload that function. Surprisingly, that does not work. I have successfully changed the behavior of:> print(one) > oneThese now print without row names, but> print(three)continues to print the row names, even though> class(three[[1]])is "data.frame", so I'm not clear why it doesn't take the print defaults from print.data.frame! Any advice would be appreciated. I can live with the row names, but there are cases where I want to suppress them within a list. Thanks, Daniel
Prof Brian Ripley
2008-Aug-10 12:58 UTC
[R] print data frames without row names (within a list)
Try auto-printing, e.g.> three[[1]] a b 1 x 2 y 3 z [[2]] a b 4 q 5 r 6 s or change print.data.frame *in the base namespace* by fixInNamespace. When you said you 'reloaded that function' I suspect that in fact you source()-d it into a different place, your workspace. On Sun, 10 Aug 2008, Daniel Ezra Johnson wrote:> This should be an easy one, but I could not find the answer in the > obvious places. > > one <- data.frame(a=c(1,2,3),b=c("x","y","z")) > two <- data.frame(a=c(4,5,6),b=c("q","r","s")) > >> print(one) > a b > 1 1 x > 2 2 y > 3 3 z > >> print(one,row.names=F) > a b > 1 x > 2 y > 3 z > > So far, so good, but how do I do this if the data frames are bound into > a list? > >> three <- list(one,two) >> print(three,row.names=F) #same as print(three,row.names=T) > > [[1]] > a b > 1 1 x > 2 2 y > 3 3 z > > [[2]] > a b > 1 4 q > 2 5 r > 3 6 s > > Is there any way to stop the row (or column) names from printing in a > case like this? > I just thought of one way - change the default in print.data.frame() > and reload that function. > > Surprisingly, that does not work. I have successfully changed the > behavior of: > >> print(one) >> one > > These now print without row names, but > >> print(three) > > continues to print the row names, even though > >> class(three[[1]]) > > is "data.frame", so I'm not clear why it doesn't take the print > defaults from print.data.frame! > > Any advice would be appreciated. I can live with the row names, but > there are cases where I want to suppress them within a list. > > Thanks, > Daniel > > ______________________________________________ > R-help at r-project.org mailing list > 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. >-- Brian D. Ripley, ripley at stats.ox.ac.uk Professor of Applied Statistics, http://www.stats.ox.ac.uk/~ripley/ University of Oxford, Tel: +44 1865 272861 (self) 1 South Parks Road, +44 1865 272866 (PA) Oxford OX1 3TG, UK Fax: +44 1865 272595
Possibly Parallel Threads
- Is it possible to print a data.frame without the row names?
- how to print a data.frame without row.names
- transforming a badly organized data base into a list of data frames
- Print data frame as list including row/column name
- merge data frames with same column names of different lengths and missing values