Hello,
I'm looking for a function that counts the occurences of a given character
within a string.
f('|','ab|c|d') => 2
More precisely, I need to complete a vector of strings to ensure that all
elements have the same count of a "separator":
a|b|c
a
|a|b|c|d
=>
a|b|c||
a||||
|a|b|c|d
I guess that scan makes use of an internal function that would do the job...
Thanks,
Marc Mamin
Here are two ways for one string, both easily vectorized:
1) sum(charToRaw(x) == charToRaw("|"))
2) sum(strsplit(x, "")[[1]] == "|")
In R-devel the first looks for bytes and the second for characters, and in
UTF-8 locale there is a difference.
On Mon, 21 Feb 2005, Marc Mamin wrote:
> Hello,
>
> I'm looking for a function that counts the occurences of a given
> character within a string.
>
> f('|','ab|c|d') => 2
>
>
> More precisely, I need to complete a vector of strings to ensure that
> all elements have the same count of a "separator":
>
> a|b|c
> a
> |a|b|c|d
>
> =>
>
> a|b|c||
> a||||
> |a|b|c|d
>
> I guess that scan makes use of an internal function that would do the
job...
No, it works on an internal buffer.
--
Brian D. Ripley, ripley at stats.ox.ac.uk
Professor of Applied Statistics, http://www.stats.ox.ac.uk/~ripley/
University of Oxford, Tel: +44 1865 272861 (self)
1 South Parks Road, +44 1865 272866 (PA)
Oxford OX1 3TG, UK Fax: +44 1865 272595
a simple solution is:
vec.strings <- c("ab|c|d", "a|b|c", "a",
"|a|b|c|d")
f <- function(pat, vec.strings) sapply(strsplit(vec.strings, pat,
fixed=TRUE), length)-1
f("|", vec.strings)
but probably there are better proposals.
Best,
Dimitris
----
Dimitris Rizopoulos
Ph.D. Student
Biostatistical Centre
School of Public Health
Catholic University of Leuven
Address: Kapucijnenvoer 35, Leuven, Belgium
Tel: +32/16/336899
Fax: +32/16/337015
Web: http://www.med.kuleuven.ac.be/biostat/
http://www.student.kuleuven.ac.be/~m0390867/dimitris.htm
----- Original Message -----
From: "Marc Mamin" <M.Mamin at intershop.de>
To: <R-help at stat.math.ethz.ch>
Sent: Monday, February 21, 2005 12:35 PM
Subject: [R] character occurence within a string
> Hello,
>
> I'm looking for a function that counts the occurences of a given
> character within a string.
>
> f('|','ab|c|d') => 2
>
>
> More precisely, I need to complete a vector of strings to ensure
> that all elements have the same count of a "separator":
>
> a|b|c
> a
> |a|b|c|d
>
> =>
>
> a|b|c||
> a||||
> |a|b|c|d
>
> I guess that scan makes use of an internal function that would do
> the job...
>
>
> Thanks,
>
> Marc Mamin
>
> ______________________________________________
> R-help at stat.math.ethz.ch mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide!
> http://www.R-project.org/posting-guide.html
>