Re: [R] pretty formatting of lists

From: Thomas Petzoldt <thpe_at_simecol.de>
Date: Sun, 16 Mar 2008 16:41:05 +0100

jim holtman wrote:
> Is this basically what you want?
>
>> xx <-list(aa = round(rnorm(30),2), f = function(a) a + b, a=x, b=x)
>> xx
> $aa
> [1] 1.34 -0.21 -0.18 -0.10 0.71 -0.07 -0.04 -0.68 -0.32 0.06 -0.59
> 0.53 -1.52 0.31 -1.54 -0.30
> [17] -0.53 -0.65 -0.06 -1.91 1.18 -1.66 -0.46 -1.12 -0.75 2.09 0.02
> -1.29 -1.64 0.45
>
> $f
> function(a) a + b
>
> $a
> $a$a
> [1] -0.06 -0.16 -1.47
>
> $a$b
> [1] -0.48 0.42 1.36
>
>
> $b
> $b$a
> [1] -0.06 -0.16 -1.47
>
> $b$b
> [1] -0.48 0.42 1.36
>
>

No, I want a neat source code representation, not simply the printed content -- technically something like the following, but more reader friendly:

> cat(deparse(xx), fill=60)

structure(list(aa = c(0.25, 0.18, 0.84, -1.25, 0.09, -0.99, 1.64,
1.42, -1.29, -0.14, -1.07, -1.05, 0.98, 0.33, 1.76, -1.66, 0.96,
-0.21, -1.29, 0.78, -0.4, -1.63, -0.78, -1.05, 1.27, -1.44, 0.12,
-0.4, 0.02, 1.03), f = function (a)
a + b, structure(list(a = c(2.22, 0.36, 0.74), b = c(0.46, 0.41, 1.46)), .Names = c("a", "b")), structure(list(a = c(2.22, 0.36, 0.74), b = c(0.46, 0.41, 1.46)), .Names = c("a", "b"))), .Names = c("aa", "f", "", ""))

I wonder whether a function for some kind of "pretty deparsing" already exists before I start to write my own solution.

Thomas P.

>
> On Sun, Mar 16, 2008 at 8:47 AM, Thomas Petzoldt <thpe@simecol.de> wrote:
>> Hello,
>>
>> is there already a function in any R package which does
>> source code formatting of deparsed lists?
>>
>> Let's create the following list:
>>
>> x <- list(a = round(rnorm(3), 2),
>> b = round(rnorm(3), 2))
>>
>> xx <-c(aa = round(rnorm(30)), f = function(a) a + b, list(x, x))
>>
>>
>> Now, I want deparse it in a way that yields something like:
>>
>>
>> list(
>> aa = c(0.25, 0.18, 0.84, -1.25, 0.09, -0.99, 1.64,
>> 1.42, -1.29, -0.14, -1.07, -1.05, 0.98, 0.33,
>> 1.76, -1.66, 0.96, -0.21, -1.29, 0.78, -0.4,
>> -1.63, -0.78, -1.05, 1.27, -1.44, 0.12, -0.4,
>> 0.02, 1.03),
>> f = function (a) a + b,
>> list(
>> a = c(2.22, 0.36, 0.74),
>> b = c(0.46, 0.41, 1.46)
>> ),
>> list(
>> a = c(2.22, 0.36, 0.74),
>> b = c(0.46, 0.41, 1.46)
>> )
>> )
>>
>>
>> Thanks a lot!
>>
>> Thomas P.
>>



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. Received on Sun 16 Mar 2008 - 15:44:15 GMT

Archive maintained by Robert King, hosted by the discipline of statistics at the University of Newcastle, Australia.
Archive generated by hypermail 2.2.0, at Sun 16 Mar 2008 - 20:30:22 GMT.

Mailing list information is available at https://stat.ethz.ch/mailman/listinfo/r-help. Please read the posting guide before posting to the list.

list of date sections of archive