[R] strsplit a matrix

James Perkins jperkins at biochem.ucl.ac.uk
Mon Aug 10 18:56:37 CEST 2009


Dear all,

I am trying to split a matrix into 2 as efficiently as possible.

It is a character matrix:

  1       2       3     
1 "2-271" "2-367" "1-79"
2 "2-282" "2-378" "1-90"
3 "2-281" "2-377" "1-89"

I want to make 2 matrices from this, as succinctly and efficiently as 
possible.

I've tried such things as sapply(matrix, strsplit, "-") and tried to go 
from there, but I can't figure it out! So far I do it with a 2D for loop 
which can't be efficient!

firstPartM <- matrix(ncol= dim(zzz)[2], nrow= dim(zzz)[1])
secondPartM <- matrix(ncol= dim(zzz)[2], nrow= dim(zzz)[1])
for(i in 1:dim(zzz)[1]) {
   for(j in 1:dim(zzz)[2]) {
     splitS <- strsplit(zzz[i,j],"-")
     firstPartM[i,j] <- splitS[[1]][1]
     secondPartM[i,j] <- splitS[[1]][2]
   }
}

Cheers,

Jim




More information about the R-help mailing list