[R] Loading List data into R with scan()

David Winsemius dwinsemius at comcast.net
Thu Jun 23 17:37:04 CEST 2011


On Jun 23, 2011, at 11:19 AM, Uwe Ligges wrote:

>
>
> On 23.06.2011 16:39, Michael Pearmain wrote:
>> Hi All,
>>
>> I've been given a data file of the form:
>> 1: 3,4,5,6
>> 2:1,2,3
>> 43: 5,7,8,9,5
>>
>> and i want to read this data in as a list to create the form:
>> (guessing final look)
>> my.list
>> [[1]]
>> [1] 3 4 5 6
>>
>> [[2]]
>> [1] 1 2 3
>>
>> [[43]]
>> [1] 5 7 8 9 5
>>
>> I can get to a stage using scan:
>> scan("my.data", what = character(0), quiet = TRUE)
>> to load
>> [1] "1: 3,4,5,6"
>> [2] "2:1,2,3"
>> [3] "43: 5,7,8,9,5"
>
>
> I don't understand why you want 40 empty list elements, but here is  
> what you asked for (not optimized, just hacked in few seconds):
>
> temp <- strsplit(d, ":")
> num <- as.numeric(sapply(temp, "[[", 1))
> L <- vector(mode = "list", length = max(num))
> for(i in seq_along(temp)){
>    L[[num[i]]] <- as.numeric(unlist(strsplit(temp[[i]][2], ",")))
> }
> L

I wondered about that too. Perhaps he would be satisfied with alpha  
indexing:

d <- c( "1: 3,4,5,6", "2:1,2,3", "43: 5,7,8,9,5")
  temp <- strsplit(d, ":")
  num <- sapply(temp, "[[", 1)
  L <- vector(mode = "list")
  for(i in seq_along(temp)){
     L[[num[i]]] <- as.numeric(unlist(strsplit(temp[[i]][2], ",")))
  }

 > L
$`1`
[1] 3 4 5 6

$`2`
[1] 1 2 3

$`43`
[1] 5 7 8 9 5


> Uwe Ligges
>
>
>
>> but im not sure on how next to proceed to arrange this into a list  
>> form, can
>> anyone offer some advise?
>>
>> Thanks in advance
>>
>> Mike



David Winsemius, MD
West Hartford, CT



More information about the R-help mailing list