strsplit is certainly an alternative, but your approach is unnecessarily complicated and inefficient. Do this, instead:
sapply(strsplit(x,"/"),length)-1 Cheers, Bert On Thu, Dec 1, 2011 at 7:44 PM, Florent D. <flo...@gmail.com> wrote: > Resending my code, not sure why the linebreaks got eaten: > >> x <- data.frame(Col1 = c("abc/def", "ghi/jkl/mno"), stringsAsFactors = FALSE) >> count.slashes <- function(string)sum(unlist(strsplit(string, NULL)) == "/") >> within(x, Col2 <- vapply(Col1, count.slashes, 1)) > Col1 Col2 > 1 abc/def 1 > 2 ghi/jkl/mno 2 > > > On Thu, Dec 1, 2011 at 10:32 PM, Florent D. <flo...@gmail.com> wrote: >> I used within and vapply: >> >> x <- data.frame(Col1 = c("abc/def", "ghi/jkl/mno"), stringsAsFactors = FALSE) >> count.slashes <- function(string)sum(unlist(strsplit(string, NULL)) == >> "/")within(x, Col2 <- vapply(Col1, count.slashes, 1)) >> Col1 Col21 abc/def 12 ghi/jkl/mno 2 >> >> On Thu, Dec 1, 2011 at 1:05 PM, Bert Gunter <gunter.ber...@gene.com> wrote: >>> ## It's not a data frame -- it's just a vector. >>> >>>> x >>> [1] "abc/def" "ghi/jkl/mno" >>>> gsub("[^/]","",x) >>> [1] "/" "//" >>>> nchar(gsub("[^/]","",x)) >>> [1] 1 2 >>>> >>> >>> ?gsub >>> ?nchar >>> >>> -- Bert >>> >>> On Thu, Dec 1, 2011 at 8:32 AM, Douglas Esneault >>> <douglas.esnea...@mecglobal.com> wrote: >>>> I am new to R but am experienced SAS user and I was hoping to get some >>>> help on counting the occurrences of a character within a string at a row >>>> level. >>>> >>>> My dataframe, x, is structured as below: >>>> >>>> Col1 >>>> abc/def >>>> ghi/jkl/mno >>>> >>>> I found this code on the board but it counts all occurrences of "/" in the >>>> dataframe. >>>> >>>> chr.pos <- which(unlist(strsplit(x,NULL))=='/') >>>> chr.count <- length(chr.pos) >>>> chr.count >>>> [1] 3 >>>> >>>> I'd like to append a column, say cnt, that has the count of "/" for each >>>> row. >>>> >>>> Can anyone point me in the right direction or offer some code to do this? >>>> >>>> Thanks in advance for the help. >>>> >>>> Doug Esneault >>>> >>>> >>>> >>>> >>>> >>>> >>>> Privileged/Confidential Information may be contained in this message. If >>>> you >>>> are not the addressee indicated in this message (or responsible for >>>> delivery >>>> of the message to such person), you may not copy or deliver this message to >>>> anyone. In such case, you should destroy this message and kindly notify the >>>> sender by reply email. Please advise immediately if you or your employer >>>> does not consent to email for messages of this kind. Opinions, conclusions >>>> and other information in this message that do not relate to the official >>>> business of the GroupM companies shall be understood as neither given nor >>>> endorsed by it. GroupM companies are a member of WPP plc. For more >>>> information on our business ethical standards and Corporate Responsibility >>>> policies please refer to our website at >>>> http://www.wpp.com/WPP/About/ >>>> >>>> >>>> ______________________________________________ >>>> R-help@r-project.org mailing list >>>> https://stat.ethz.ch/mailman/listinfo/r-help >>>> PLEASE do read the posting guide >>>> http://www.R-project.org/posting-guide.html >>>> and provide commented, minimal, self-contained, reproducible code. >>> >>> >>> >>> -- >>> >>> Bert Gunter >>> Genentech Nonclinical Biostatistics >>> >>> Internal Contact Info: >>> Phone: 467-7374 >>> Website: >>> http://pharmadevelopment.roche.com/index/pdb/pdb-functional-groups/pdb-biostatistics/pdb-ncb-home.htm >>> >>> ______________________________________________ >>> R-help@r-project.org mailing list >>> https://stat.ethz.ch/mailman/listinfo/r-help >>> PLEASE do read the posting guide http://www.R-project.org/posting-guide.html >>> and provide commented, minimal, self-contained, reproducible code. -- Bert Gunter Genentech Nonclinical Biostatistics Internal Contact Info: Phone: 467-7374 Website: http://pharmadevelopment.roche.com/index/pdb/pdb-functional-groups/pdb-biostatistics/pdb-ncb-home.htm ______________________________________________ R-help@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code.