使用for循环删除字符串中的空格

时间:2018-11-15 19:15:49

标签: r whitespace stringr

我了解了Stringr库,并尝试使用它来删除字符串中的空格,但是我不明白为什么当我从向量中为字符串建立索引时,它不会将其删除。

ex是一个向量,其字符串类似于" 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"

我想编写一个循环来删除空格,但是我不明白为什么在使用stringrex[1]不起作用

以下是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"
)

我可以在for循环中使用哪个库来删除空格?

2 个答案:

答案 0 :(得分:2)

使用trimws中的base R会更容易

trimws(ex)

str_extract不能重现OP的问题

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

答案 1 :(得分:2)

str_trim中的

library(stringr)将起作用

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

对于右修剪,您可以将其设置为right,或者将其两面都设置为both。在这种情况下,您也不需要循环。字符串向量可以直接传递到str_trim