[R] formatting a list

jim holtman jholtman at gmail.com
Mon Oct 22 21:06:13 CEST 2007


Does this do what you want?

> x <- scan(textConnection('1 2 3 4 5
+ 6 7 8 9 0
+ 9 8 7 6 5
+ 4 3 2 1 0'), what=rep(list(0),5))
Read 4 records
> x
[[1]]
[1] 1 6 9 4

[[2]]
[1] 2 7 8 3

[[3]]
[1] 3 8 7 2

[[4]]
[1] 4 9 6 1

[[5]]
[1] 5 0 5 0

> # create a matrix and then 'lapply' each column to make new list
> x.mat <- do.call('rbind',x)
> y <- lapply(1:ncol(x.mat), function(.col) x.mat[,.col])
> y
[[1]]
[1] 1 2 3 4 5

[[2]]
[1] 6 7 8 9 0

[[3]]
[1] 9 8 7 6 5

[[4]]
[1] 4 3 2 1 0



On 10/22/07, Tomas Vaisar <tvaisar at u.washington.edu> wrote:
> Hi Jim,
>
> I really appreciate your help.
>  From the input file I have - 19 columns, 7000 rows - the scan gives me
> the desired format of a list consisting of 19 lists with 7000 values each.
> However I need a list of 7000 lists with 19 values each. (e.g. each row
> of my input file should be a separate list bound in a list of all these
> lists)
> I use both commands you suggested -
> x <- scan('temp.txt', what=c(rep(list(0), 19)))
> followed by
> x.matrix <- do.call('rbind', x)  # gives 7000 x 19 matrix.
>
> Although this makes a matrix of the correct dimensions it is not the
> "list of lists" the ROCR package expects as input.  Can you convert this
> matrix into a "list of lists"?  Or is there a simple way in R to convert
> a table into such a "list of lists"?
>
> Thanks again,
>
> Tomas
>
>
> jim holtman wrote:
> > That is what I thought and that is the format that the 'scan' approach
> > should provide.  I was just confused when you said that you were going
> > to have to transpose it, write it and then read it back in for some
> > reason.  I understand that Excel can not handle 7000 columns, but was
> > wondering where that came into play.
> >
> > On 10/21/07, Tomas Vaisar <tvaisar at u.washington.edu> wrote:
> >
> >> The data I have is tab delimited file with 7000 lines of 19 values each
> >> (representing 7000 permutations on 19 variables). I want to get it into
> >> the ROCR package which expects the data to be in lists - single list of
> >> 19 values for each permutation, e.g. list of 7000 lists of 19 values each.
> >>
> >> I hope this is little clearer.
> >>
> >> Tomas
> >>
> >> jim holtman wrote:
> >>
> >>> What is it that you want to do?  The 'scan' statement give you a list
> >>> of length 7000 with 19 entries each.  Do you want to create a matrix
> >>> that has 7000 rows by 19 columns?  If so, then you just have to take
> >>> the output of the 'scan' and do:
> >>>
> >>> x.matrix <- do.call('rbind', x)  # gives 7000 x 19 matrix.
> >>>
> >>> So I am still not sure exactly what your input is and what you want to
> >>> do with it.
> >>>
> >>> On 10/21/07, Tomas Vaisar <tvaisar at u.washington.edu> wrote:
> >>>
> >>>
> >>>> Hi Jim,
> >>>>
> >>>> thanks a lot.  It works, however - my other problem is that I need to
> >>>> transpose the original table before reading it into the list because the
> >>>> data come from Excel and it can't handle 7000 columns.  I could read it
> >>>> in R transpose end write into a new tab delim file and then read it back
> >>>> in,  but I would think that there might be a way in R to do both.
> >>>> Would you know about the way?
> >>>>
> >>>> Tomas
> >>>>
> >>>> jim holtman wrote:
> >>>>
> >>>>
> >>>>> another choice is:
> >>>>>
> >>>>> x <- scan('temp.txt', what=c(rep(list(0), 19)))
> >>>>>
> >>>>> On 10/20/07, Tomas Vaisar <tvaisar at u.washington.edu> wrote:
> >>>>>
> >>>>>
> >>>>>
> >>>>>> Hi,
> >>>>>>
> >>>>>> I am new to R and need to read in a file with 19 columns and 7000 rows
> >>>>>> and make it into a list of 7000 lists with 19 items each.  For a
> >>>>>> simpler case of 10 by 10 table I used x <-scan("file",
> >>>>>> list(0,0,0,0,0,0,0,0,0,0)), perhaps clumsy, but it did the job.
> >>>>>> However with the large 19x7000 (which needs to be transposed) I am not
> >>>>>> sure how to go about it.
> >>>>>>
> >>>>>> Coudl somebody suggest a way?
> >>>>>>
> >>>>>> Thanks,
> >>>>>>
> >>>>>> Tomas
> >>>>>>
> >>>>>> ______________________________________________
> >>>>>> 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.
> >>>>>>
> >>>>>>
> >>>>>>
> >>>>>>
> >>>>>
> >>>
> >>>
> >
> >
> >
>


-- 
Jim Holtman
Cincinnati, OH
+1 513 646 9390

What is the problem you are trying to solve?



More information about the R-help mailing list