how to use list index to get vector
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)