[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