[R] Best way to strsplit a column

Satoshi Takahama brown_emu at yahoo.com
Tue Mar 4 15:15:30 CET 2008


Hi Daniel,

After using strsplit() you can call a user-written function to extend the length of each list element to a uniform value and then use
do.call() with rbind. For instance,

> txt <- "1:2
+ 3:4
+ 5
+ 6:7"
> x<- readLines(textConnection(txt))
> 
> f <- function(x)
+   do.call(rbind,
+           lapply(x,function(a,n) c(a,rep(NA,n-length(a))),
+                  n = max(sapply(x,length))))
> f(strsplit(x,":"))
     [,1] [,2]
[1,] "1"  "2" 
[2,] "3"  "4" 
[3,] "5"  NA  
[4,] "6"  "7" 

Hope this helps,

ST


----- Original Message ----
From: Daniel Brewer <daniel.brewer at icr.ac.uk>
To: r-help at stat.math.ethz.ch
Sent: Tuesday, March 4, 2008 5:54:51 AM
Subject: [R] Best way to strsplit a column

Hello,

I have a data.frame with a column that I would like to split into based 
around the delimiter ":".  This is a useful feature in Excel.  I cannot 
work out the best way to do it in R.  I am sure you need to use 
strsplit, but that returns a list.  The problem is that some values in 
the column do not contain a ":" so should have a "NA" in the second 
column of the result, and this makes doing an unlist a non-starter.

Any ideas?

Many thanks

Daniel Brewer

The Institute of Cancer Research: Royal Cancer Hospital, a charitable Company Limited by Guarantee, Registered in England under Company No. 534147 with its Registered Office at 123 Old Brompton Road, London SW7 3RP.

This e-mail message is confidential and for use by the a...{{dropped:16}}



More information about the R-help mailing list