2014-09-17 2 views
1

Я не знаком с обработкой текста в R и не зациклился на том, как удалить ведущее белое пространство в строке. Вот код:Как удалить ведущее свободное пространство

set.seed(1234) 
b <- paste0(sample(c("bbb ", " bbb "), 10, replace = TRUE), rep("ccc ddd", 10)) 
print(b) 

[1] "bbb ccc ddd" " bbb ccc ddd" " bbb ccc ddd" " bbb ccc ddd" " bbb ccc ddd" 
[6] " bbb ccc ddd" "bbb ccc ddd" "bbb ccc ddd" " bbb ccc ddd" " bbb ccc ddd" 

Я понял, что я могу удалить завершающие пробелы sub(' +$', '', b) но изменить его к югу ('$+ ', '', b) не удаляет начальные пробелы. Гадание это быстро исправить ...

+0

Интересно, если вы попытались найти его сначала ... –

+0

Да, это дубликат. Не стесняйтесь удалять. @DavidArenburg, да, я пробовал искать, вот как я добрался до воспроизводимого кода. Если бы я использовал «trim» вместо «remove», я бы попал на этот пост. –

ответ

3

Если вы зайдете на этот вопрос:

How to trim leading and trailing whitespace in R?

вы увидите очень тщательный ответ на подстроечного пробельных: Ответ есть дает следующие функции:

trim.leading <- function (x) sub("^\\s+", "", x) 

Применяя к вашим данным:

set.seed(1234) 
b <- paste0(sample(c("bbb ", " bbb "), 10, replace = TRUE), rep("ccc ddd", 10)) 
b 

trim.leading(b) 

#[1] "bbb ccc ddd" "bbb ccc ddd" "bbb ccc ddd" "bbb ccc ddd" "bbb ccc ddd" "bbb ccc ddd" 
#[8] "bbb ccc ddd" "bbb ccc ddd" "bbb ccc ddd" "bbb ccc ddd" 
4

Try str_trim из stringr.

В левой стороне

> library(stringr) 
> str_trim(b, "left") 
# [1] "bbb ccc ddd" "bbb ccc ddd" "bbb ccc ddd" "bbb ccc ddd" "bbb ccc ddd" 
# [6] "bbb ccc ddd" "bbb ccc ddd" "bbb ccc ddd" "bbb ccc ddd" "bbb ccc ddd" 

Аналогично, str_trim(b, "right") для правой стороны. И для обеих сторон просто str_trim(b)