I cannot find out how to list and print all objects in a workspace. I\'d like to see them all and understand what\'s going on. For example, ls()
gives you 30 object
Do you mean 'display' in the sense of "for every object in ls()
, I want to see what I would see if I typed it into the prompt"? What if you have some matrix that's 1000x10000 - you still want to print it? I personally like ls.str()
- I think it gives a nice concise overview of everything, and handles the case I just mentioned nicely.
However if you want to basically "display" every object in the sense of typing each on the prompt, I'd suggest a loop:
for ( obj in ls() ) { print(get(obj)) }
Since ls()
returns a character vector of variable names, I need to use get(obj)
which gets the variable whose name is in obj
.
You may wish to do a variation of this in order to print the variable name too, e.g.
for ( obj in ls() ) { cat('---',obj,'---\n'); print(get(obj)) }
As an example:
> a <- 1
> b <- LETTERS[1:10]
> c <- data.frame(a=LETTERS[1:10],b=runif(10))
> for ( obj in ls() ) { cat('---',obj,'---\n'); print(get(obj)) }
--- a ---
[1] 1
--- b ---
[1] "A" "B" "C" "D" "E" "F" "G" "H" "I" "J"
--- c ---
a b
1 A 0.1087306
2 B 0.9577797
3 C 0.8995034
4 D 0.1434574
5 E 0.3548047
6 F 0.1950219
7 G 0.1453959
8 H 0.4071727
9 I 0.3324218
10 J 0.4342141
This does have a drawback though - next time you call ls()
there's now an obj
in there. I'm sure there's some workaround though.
Anyhow, I think I still prefer ls.str()
for the way it handles big objects (but I work with a lot of huge (millions of elements) matrices, so that's my preference).