numNameSplit <- function(dat,splitchar=";") {
require(foreach)
res <- foreach(a=iapply(dat,1),.combine="rbind") %do% {
cr <- grep(";",a[2])
if(length(cr)==0) {
res <- a
} else {
y <- strsplit(x=a[[2]],split=splitchar)
res <- foreach(b=y,.combine="rbind") %do% cbind(num=a[[1]],name=b)
}
res
}
return(res)
}
num <- c(1234,2245,3764)
name <- c("Zhang San","zhang San; Li Si","Zhang Si; Wang Er-xiao")
dat <- data.frame(num=num,name=name)
numNameSplit(dat)
> numNameSplit(dat)
num name
1 1234 Zhang San
2 2245 zhang San
3 2245 Li Si
4 3764 Zhang Si
5 3764 Wang Er-xiao