Lists. You're missing the "list" concept. I'm sure others can explain it better, but here's the basic idea.
Take a look at l after you do the split: > l [[1]] [1] "1" "2" > length(l) [1] 1 strsplit() returns a list of length 1, with two elements, the two split "bits" of your initial string. The help for strsplit() even says: A list of length 'length(x)' the 'i'-th element of which contains the vector of splits of 'x[i]'. You can get the individual components that you expected with l[[1]][1] and l[[1]][2] This is confusing in the single case, but allows strsplit to work on multiple strings: > s <- c("1,2", "3,4") > l = strsplit(s, ",", fixed=TRUE) > l [[1]] [1] "1" "2" [[2]] [1] "3" "4" > l[[1]][1] [1] "1" > l[[2]][1] [1] "3" > length(l) [1] 2 On Wed, Feb 11, 2009 at 2:18 PM, Paul Johnston <pcj...@gmail.com> wrote: > Ok, so I'm new to R, but this is driving me crazy. In this example, I > am trying to process each element in a list. > > <code> > s = "1,2" > l = strsplit(s, ",", fixed=TRUE) > print("BEGIN") > n = length(l) > i = 1 > while (i <= n) { > x = l[[i]] > print(paste("x:", class(x), x)) > print("BEFORE PRINT") > print(x) > print("AFTER PRINT") > i = i + 1 > } > </code> > > <actual output> > [exec] [1] "BEGIN" > [exec] [1] "x: character 1" "x: character 2" > [exec] [1] "BEFORE PRINT" > [exec] [1] "1" "2" > [exec] [1] "AFTER PRINT" > [exec] [1] "END" > [exec] [1] TRUE > </actual output> > > <expected output> > [exec] [1] "BEGIN" > [exec] [1] "x: character 1" > [exec] [1] "BEFORE PRINT" > [exec] [1] "1" > [exec] [1] "AFTER PRINT" > [exec] [1] "x: character 2" > [exec] [1] "BEFORE PRINT" > [exec] [1] "2" > [exec] [1] "AFTER PRINT" > [exec] [1] "END" > [exec] [1] TRUE > </expected output> > > What *basic* concept am I missing here? The same thing happens with > for (x in l) and lapply(l, function(x) print(x)). Please help. > -- Sarah Goslee http://www.functionaldiversity.org ______________________________________________ R-help@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.