Asteroid098
Asteroid098

Reputation: 2825

Remove whitespace in string using for loop

I learned about stringr library and tried to use it to remove whitespace from a string, but I don't understand why it would not remove it when I index a string from a vector.

ex is a vector with strings similar to " 1950"

> library(stringr)
> str_replace_all(ex[1], fixed("  "), "")
[1] "  1950"
> str_replace_all("  1950", fixed("  "), "")
[1] "1950"
> str("  1950")
 chr "  1950"
> str(ex[1])
 chr "  1950"

I wanted to write a loop to remove the whitespaces, but I don't understand why stringr does not work when I use ex[1]

Following is dput(ex)

c("  1950", "  1951", "  1952", "  1953", "  1954", 
"  1955", "  1956", "  1957", "  1958", "  1959", "  1960", 
"  1961", "  1962", "  1963", "  1964", "  1965", "  1966", 
"  1967", "  1968", "  1969", "  1970", "  1971", "  1972", 
"  1973", "  1974", "  1975", "  1976", "  1977", "  1978", 
"  1979", "  1980", "  1981", "  1982", "  1983", "  1984", 
"  1985", "  1986", "  1987", "  1988", "  1989", "  1990", 
"  1991", "  1992", "  1993", "  1994", "  1995", "  1996", 
"  1997", "  1998", "  1999", "  2000", "  2001", "  2002", 
"  2003", "  2004", "  2005", "  2006", "  2007", "  2008", 
"  2009", "  2010", "  2011", "  2012", "  2013", "  2014", 
"  2015", "  2016", "  2017", "        ", "Provided by :   All China Marketing Resarch"
)

What library can I use in a for loop to remove whitespaces?

Upvotes: 0

Views: 299

Answers (2)

ist123
ist123

Reputation: 155

str_trim within library(stringr) would work

i.e

 trimmed = str_trim(your_string, which = c('left'))

For right trim, you could set it to right or for both sides, both. You also wouldn't need to loop in this case. A vector of strings can be passed directly to str_trim.

Upvotes: 2

akrun
akrun

Reputation: 887991

It is easier with trimws from base R

trimws(ex)

The OP's issue is not reproducible with str_extract

stringr::str_replace_all(ex[1], fixed("  "), "")
#[1] "1950"

Upvotes: 2

Related Questions