[R] how to use list index to get vector

Liaw, Andy andy_liaw at merck.com
Tue May 17 03:55:00 CEST 2005


If you have the data in files in such format, with one entry per line, you
can do something like:

dat <- matrix(scan("fileWithData", sep=":"), ncol=2, byrow=TRUE)

Then the first column of dat would be the indices, and the second column
would be the values.

Andy

> From: Luke
> 
> Hi Gabor, thanks a lot. I understand it now. But Andrew's method is
> easier for me to understand. Can I extend my question? I have a data
> file, every line has such format:
> 2:102 5:85 ...
> The number before colon is data entry index, the number after colon is
> data entry value, and other data entries are zero. I use scan to read
> them in R and need to separate the index and value to different
> vectors. For example:
> 
> > foo
> [1] "2:102" "5:85"
> > foo2 <- strsplit(foo, split=":")
> > foo2
> [[1]]
> [1] "2"   "102"
> 
> [[2]]
> [1] "5"  "85"
> 
> > myIndex <- as.numeric(unlist(lapply(foo2, function(x) x[1])))
> or
> > myIndex <- as.numeric(foo2, "[", 1)
> > myIndex
> [1] "2" "5"
> 
> Is this the simplest way to get the index or value vector?
> 
> -Luke
> 
> On 5/16/05, Gabor Grothendieck <ggrothendieck at gmail.com> wrote:
> > Its the indexing function written in ordinary function 
> form.  That is,
> > foo[1:2] can be written as "["(foo, 1:2)
> > 
> > On 5/16/05, Luke <jyzz88 at gmail.com> wrote:
> > > Yes, it works. Althought I can understand the help page 
> of sapply,  I
> > > don't know why it works.  What is "["?
> > >
> > > -Luke
> > >
> > > On 5/16/05, Gabor Grothendieck <ggrothendieck at gmail.com> wrote:
> > > > On 5/16/05, Luke <jyzz88 at gmail.com> wrote:
> > > > > I have a simple question, but I couldn't find the 
> answer in R manuals.
> > > > >
> > > > > Assume I have a list:
> > > > > > foo <- list()
> > > > > > foo[[1]] <- c(1, 2, 3)
> > > > > > foo[[2]] <- c(11,22,33)
> > > > > > foo[[3]] <- c(111,222,333)
> > > > > > foo
> > > > > [[1]]
> > > > > [1] 1 2 3
> > > > >
> > > > > [[2]]
> > > > > [1] 11 22 33
> > > > >
> > > > > [[3]]
> > > > > [1] 111 222 333
> > > > >
> > > > > How to use list index to get a vector of, say, the 
> first elements of
> > > > > list elements?
> > > > > That is, how to get a vector c(1, 11, 111) from foo?
> > > > >
> > > > > foo[[]][1] doesn't work.
> > > > >
> > > >
> > > > Try this:
> > > >
> > > > sapply(foo, "[", 1)
> > > >
> > >
> >
> 
> ______________________________________________
> R-help at stat.math.ethz.ch mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide! 
> http://www.R-project.org/posting-guide.html
> 
> 
>




More information about the R-help mailing list