Im trying to split a string on "." and create additional columns with the two strings before and after ".".
tes<-c("1.abc","2.di","3.lik")
dat<-c(5,3,2)
h<-data.frame(tes,dat)
h$num<-substr(h$tes,1,1)
h$prim<-unlist(strsplit(as.character(h$tes),"\\."))[2]
h$prim<-sapply(h$tes,unlist(strsplit(as.character(h$tes),"\\."))[2])
I´d like h$prim to contain "abc","di","lik"..However I´m not able to figure it out. I guess strsplit is not vectorized, but then I thought the sapply version should have worked.  However I assume it should be easy:-)
Regards, //M
This should do the trick
R> sapply(strsplit(as.character(h$tes), "\\."), "[[", 2)
[1] "abc" "di"  "lik"
                        With the stringr package it's even easier:
library(stringr)
str_split_fixed(h$tes, fixed("."), 2)[, 2]
                        This is the same as rcs' answer, but may be easier to understand:
> sapply(strsplit(as.character(h$tes), "\\."), function(x) x[[2]])
[1] "abc" "di"  "lik"
                        This question appears several time on StackOverflow.
In exact form as yours:
strsplitSome similar question in this topic:
And if you care about speed then you should consider tip from John answer about fixed parameter to strsplit.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With