Here is a way of reading the data into a 'list'. You can convert the list to any array of the proper dimensions.
> input <- scan('/tempxx.txt.r', what='') Read 21 items > input [1] "SPECIES1" "999001099" "900110109" "011101000" "901100101" "110100019" [7] "901110019" "SPECIES2" "999000099" "900110119" "011101100" "901010101" [13] "110000019" "900000019" "SPECIES3" "999001099" "900100109" "011100010" [19] "901100100" "110100019" "901110019" > # find the names > breaks <- grep("[[:alpha:]][[:alnum:]]+", input) > # determine the sizes > map <- cbind(breaks, diff(c(breaks, length(input)+1))) > out <- list() > # repeat for each data block > for (i in 1:nrow(map)){ + .set <- NULL + for (j in 1:(map[i, 2] - 1)){ + .set <- rbind(.set, strsplit(input[map[i, 1] + j], '')[[1]]) + } + out[[input[map[i, 1]]]] <- .set + } > out $SPECIES1 [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [1,] "9" "9" "9" "0" "0" "1" "0" "9" "9" [2,] "9" "0" "0" "1" "1" "0" "1" "0" "9" [3,] "0" "1" "1" "1" "0" "1" "0" "0" "0" [4,] "9" "0" "1" "1" "0" "0" "1" "0" "1" [5,] "1" "1" "0" "1" "0" "0" "0" "1" "9" [6,] "9" "0" "1" "1" "1" "0" "0" "1" "9" $SPECIES2 [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [1,] "9" "9" "9" "0" "0" "0" "0" "9" "9" [2,] "9" "0" "0" "1" "1" "0" "1" "1" "9" [3,] "0" "1" "1" "1" "0" "1" "1" "0" "0" [4,] "9" "0" "1" "0" "1" "0" "1" "0" "1" [5,] "1" "1" "0" "0" "0" "0" "0" "1" "9" [6,] "9" "0" "0" "0" "0" "0" "0" "1" "9" $SPECIES3 [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [1,] "9" "9" "9" "0" "0" "1" "0" "9" "9" [2,] "9" "0" "0" "1" "0" "0" "1" "0" "9" [3,] "0" "1" "1" "1" "0" "0" "0" "1" "0" [4,] "9" "0" "1" "1" "0" "0" "1" "0" "0" [5,] "1" "1" "0" "1" "0" "0" "0" "1" "9" [6,] "9" "0" "1" "1" "1" "0" "0" "1" "9" > On 12/22/05, Colin Beale <[EMAIL PROTECTED]> wrote: > > Hi, > > I'm needing some help finding a function to read a large text file into an > array in R. The data are essentially presence / absence / na data for many > species and come as a grid with each species name (after two spaces) at the > beginning of the matrix defining the map for that species. An excerpt could > therefore be: > > SPECIES1 > 999001099 > 900110109 > 011101000 > 901100101 > 110100019 > 901110019 > > SPECIES2 > 999000099 > 900110119 > 011101100 > 901010101 > 110000019 > 900000019 > > SPECIES3 > 999001099 > 900100109 > 011100010 > 901100100 > 110100019 > 901110019 > > where 9 is actually na, 0 is absence and 1 presence. The final array I > want to create should have dimensions that are the x and y coordinates and > the number of species (known in advance). (In this example dim = c(9,6,3)). > It would be sort of neat if the code could also read the species name into > the appropriate names attribute, but this is a refinement that I could > probably do if someone can help me read the data into R and into an array in > the first place. I'm currently thinking a line by line approach using > readLines might be the best option, but I've got a very long file - well > over 100 species, each a matrix of 70 x 100 datapoints. making this option > rther time consuming, I expect - especially as the next dataset has 1300 > species and a much larger grid... > > Any hints would be gratefully recieved. > > Colin Beale > Macaulay Land Use Research Institute > > ______________________________________________ > R-help@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 > -- Jim Holtman Cincinnati, OH +1 513 247 0281 What the problem you are trying to solve? [[alternative HTML version deleted]] ______________________________________________ R-help@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