Regression expression to delete one or more spaces at end of string

classic Classic list List threaded Threaded
4 messages Options
Reply | Threaded
Open this post in threaded view
|

Regression expression to delete one or more spaces at end of string

Fisher Dennis
R 3.3.1
OS X

Colleagues,

I have encountered an unexpected regex problem

I have read an Excel file into R using the readxl package.  Columns names are:

COLNAMES <- c("Study ID", "Test and Biological Matrix", "Subject No. ", "Collection Date",
"Collection Time", "Scheduled Time Point", "Concentration", "Concentration Units",
"LLOQ", "ULOQ", "Comment”)

As you can see, there is a trailing space in “Subject No. “.  I would like to delete that space.  The following works:
        sub(“ $”, “”, COLNAMES)
However, I would like a more general approach that removes any trailing whitespace.

I tried variations such as:
        sub("[:blank:]$", "", COLNAMES)
(also, without the $ and ‘space' instead of ‘blank') without success — to my surprise, characters other than the trailing space were deleted but the trailing space remained.

Guidance on the correct syntax would be appreciated.

Dennis

Dennis Fisher MD
P < (The "P Less Than" Company)
Phone / Fax: 1-866-PLessThan (1-866-753-7784)
www.PLessThan.com

______________________________________________
[hidden email] mailing list -- To UNSUBSCRIBE and more, see
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.
Reply | Threaded
Open this post in threaded view
|

Re: Regression expression to delete one or more spaces at end of string

Marc Schwartz-3

> On Aug 2, 2016, at 11:46 AM, Dennis Fisher <[hidden email]> wrote:
>
> R 3.3.1
> OS X
>
> Colleagues,
>
> I have encountered an unexpected regex problem
>
> I have read an Excel file into R using the readxl package.  Columns names are:
>
> COLNAMES <- c("Study ID", "Test and Biological Matrix", "Subject No. ", "Collection Date",
> "Collection Time", "Scheduled Time Point", "Concentration", "Concentration Units",
> "LLOQ", "ULOQ", "Comment”)
>
> As you can see, there is a trailing space in “Subject No. “.  I would like to delete that space.  The following works:
> sub(“ $”, “”, COLNAMES)
> However, I would like a more general approach that removes any trailing whitespace.
>
> I tried variations such as:
> sub("[:blank:]$", "", COLNAMES)
> (also, without the $ and ‘space' instead of ‘blank') without success — to my surprise, characters other than the trailing space were deleted but the trailing space remained.
>
> Guidance on the correct syntax would be appreciated.
>
> Dennis


Dennis,

There is actually an example in ?gsub:

## trim trailing white space
str <- "Now is the time      "
sub(" +$", "", str)  ## spaces only

The '+' sign will match the preceding space one or more times at the end of the character string.

Note that as per ?regex, it is [:space:], not [:blank:] and the brackets need to be doubled in the regex to define the enclosing character group. An example would be:

sub("[[:space:]]+$", "", str) ## white space, POSIX-style

which is also in ?gsub.

Regards,

Marc Schwartz

______________________________________________
[hidden email] mailing list -- To UNSUBSCRIBE and more, see
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.
Reply | Threaded
Open this post in threaded view
|

Re: Regression expression to delete one or more spaces at end of string

R help mailing list-2
In reply to this post by Fisher Dennis
First, use [[:blank:]] instead of [:blank:]. that latter matches colon, b,
l,
a, n, and k, the former whitespace.

Second, put + after [[:blank:]] to match one or more of them.

Bill Dunlap
TIBCO Software
wdunlap tibco.com

On Tue, Aug 2, 2016 at 9:46 AM, Dennis Fisher <[hidden email]> wrote:

> R 3.3.1
> OS X
>
> Colleagues,
>
> I have encountered an unexpected regex problem
>
> I have read an Excel file into R using the readxl package.  Columns names
> are:
>
> COLNAMES        <- c("Study ID", "Test and Biological Matrix", "Subject
> No. ", "Collection Date",
> "Collection Time", "Scheduled Time Point", "Concentration", "Concentration
> Units",
> "LLOQ", "ULOQ", "Comment”)
>
> As you can see, there is a trailing space in “Subject No. “.  I would like
> to delete that space.  The following works:
>         sub(“ $”, “”, COLNAMES)
> However, I would like a more general approach that removes any trailing
> whitespace.
>
> I tried variations such as:
>         sub("[:blank:]$", "", COLNAMES)
> (also, without the $ and ‘space' instead of ‘blank') without success — to
> my surprise, characters other than the trailing space were deleted but the
> trailing space remained.
>
> Guidance on the correct syntax would be appreciated.
>
> Dennis
>
> Dennis Fisher MD
> P < (The "P Less Than" Company)
> Phone / Fax: 1-866-PLessThan (1-866-753-7784)
> www.PLessThan.com
>
> ______________________________________________
> [hidden email] mailing list -- To UNSUBSCRIBE and more, see
> 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.

        [[alternative HTML version deleted]]

______________________________________________
[hidden email] mailing list -- To UNSUBSCRIBE and more, see
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.
Reply | Threaded
Open this post in threaded view
|

Re: Regression expression to delete one or more spaces at end of string

David R Forrest
In reply to this post by Fisher Dennis
Double the [[]] and add a + for one-or-more characters:

sub("[[:blank:]]+$", "", COLNAMES)



> On Aug 2, 2016, at 12:46 PM, Dennis Fisher <[hidden email]> wrote:
>
> R 3.3.1
> OS X
>
> Colleagues,
>
> I have encountered an unexpected regex problem
>
> I have read an Excel file into R using the readxl package.  Columns names are:
>
> COLNAMES <- c("Study ID", "Test and Biological Matrix", "Subject No. ", "Collection Date",
> "Collection Time", "Scheduled Time Point", "Concentration", "Concentration Units",
> "LLOQ", "ULOQ", "Comment”)
>
> As you can see, there is a trailing space in “Subject No. “.  I would like to delete that space.  The following works:
> sub(“ $”, “”, COLNAMES)
> However, I would like a more general approach that removes any trailing whitespace.
>
> I tried variations such as:
> sub("[:blank:]$", "", COLNAMES)
> (also, without the $ and ‘space' instead of ‘blank') without success — to my surprise, characters other than the trailing space were deleted but the trailing space remained.
>
> Guidance on the correct syntax would be appreciated.
>
> Dennis
>
> Dennis Fisher MD
> P < (The "P Less Than" Company)
> Phone / Fax: 1-866-PLessThan (1-866-753-7784)
> www.PLessThan.com
>
> ______________________________________________
> [hidden email] mailing list -- To UNSUBSCRIBE and more, see
> 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.

--
Dr. David Forrest
[hidden email]
804-684-7900w
757-968-5509h
804-413-7125c
#240 Andrews Hall
Virginia Institute of Marine Science
Route 1208, Greate Road
PO Box 1346
Gloucester Point, VA, 23062-1346










______________________________________________
[hidden email] mailing list -- To UNSUBSCRIBE and more, see
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.