[R] formatting a list

Tomas Vaisar tvaisar at u.washington.edu
Mon Oct 22 18:52:06 CEST 2007


Hi Chuck,

thanks for your responses.   I did not ignore your suggestions - I did 
try them and they did not produce what I need.
 
The first one produced table with the same format as a read.table would 
generate, not not a list of lists.
Second one gave me an error after returning Read 19 items multiple times 
: Error in textConnection(x) : all connections are in use
The last one gave me similar error on the first step - Error in 
file(con, "r") : all connections are in use

However, your last suggestion to make list of lists seems that it 
works.  I will have to test more.

Cheers,

Tomas

Charles C. Berry wrote:
>
> Tomas,
>
> Three different ways to create a list of 7000 vectors from a file of 
> 7000 rows and 19 columns are given here:
>
>     http://article.gmane.org/gmane.comp.lang.r.general/97032
>
> which I think is what you are asking for.
>
> If you truly need  a list of 7000 lists each of length 1 containing a 
> vector of length 19, then do this:
>
> list.of.lists.of.one.vector.each <- lapply( list.of.vectors, list )
>
>
> BTW, as this thread appears in
>
>     http://news.gmane.org/gmane.comp.lang.r.general
>
> the above article was the firt reply to your original query. I am 
> puzzled as to why you did not simply implement one of the three 
> methods shown there.
>
> Chuck
>
> On Mon, 22 Oct 2007, Tomas Vaisar 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.
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>
>>>>>
>>>>>
>>>
>>>
>>>
>>
>> ______________________________________________
>> 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.
>>
>
> Charles C. Berry                            (858) 534-2098
>                                             Dept of Family/Preventive 
> Medicine
> E mailto:cberry at tajo.ucsd.edu                UC San Diego
> http://famprevmed.ucsd.edu/faculty/cberry/  La Jolla, San Diego 
> 92093-0901
>
>



More information about the R-help mailing list