Sub uses POSIX-extended regular expressions. It searches for the
first argument, the pattern, and replaces it with the second argument
in the variable defined by the third argument. [[:digit:]] is a
match-any-digit operator; it matches the characters 0-9. The {#} is
the interval operator, where what's inside the bracket's is a count.
So [[:digit:]]{4} means match 4 digits. All together, ([[:digit:]]
{4})-([[:digit:]]{2})-([[:digit:]]{2}) means "Match 4 digits followed
by a dash followed by 2 digits followed by a dash followed by 2 digits.
By surrounding pieces of the search pattern in parentheses, we create
back-references, which can be used in the replacement (second
argument) like variables, \\1 to \\9, in the order that they appear
in the pattern. When we replace the pattern with '\\1', that means
return what is in the first set of parentheses, or the first four
digits before a dash before two digits before a dash before another
two digits.
Note: most of the time, we'd use single slashes to escape a character
(i.e. \1), but R needs double slashes (i.e. \\1).
If you're interested in regular expressions, this site is quite
useful: http://www.cs.utah.edu/dept/old/texinfo/regex/regex_toc.html.
Make sense?
Jeff.
On Sep 18, 2007, at 10:46 AM, Arun Kumar Saha wrote:
> Dear Jeffrey,
>
> Your syntax looks very extraordinary to me. I would be very happy
> if you can explain this notation.
>
> Regards,
>
> On 9/18/07, Jeffrey Robert Spies <[EMAIL PROTECTED]> wrote:And one
> using regular expressions:
>
> x <- "2005-09-01"
> pattern <- '([[:digit:]]{4})-([[:digit:]]{2})-([[:digit:]]{2})'
> y <- sub(pattern, '\\1', x)
> m <- sub(pattern, '\\2', x)
> d <- sub(pattern, '\\3', x)
>
> -- Jeff.
>
> On Sep 18, 2007, at 5:00 AM, Arun Kumar Saha wrote:
>
> > Dear all,
> >
> > I have a variable 'x' like that:
> >
> >> x
> > [1] "2005-09-01"
> >
> > Here, 2005 represents year, 09 month and 01 day.
> >
> > Now I want to create three variables naming: y, m, and d such that:
> >
> > y = 2005
> > m = 09
> > d = 01
> >
> > can anyone tell me how to do that?
> >
> > Regards,
> >
> > [[alternative HTML version deleted]]
> >
> > ______________________________________________
> > [email protected] 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.
>
>
>
______________________________________________
[email protected] 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.