3

私のデータセットは次のようなものです

John
Tally
 mac
hero

「 」で始まる文字列を削除したい

したがって、結果の変数は次のようになります

John
Tally
hero

利用した

library(stringr)
which(startsWith(names[,1]," "))

" " を含む行を取得するには

これを削除する効率的な方法を教えてください。

4

2 に答える 2

8

regexとを使用した片道grepl:

vec <- c('John',
         'Tally',
         ' mac',
         'hero')

 #grepl returns TRUE if there is a match.
 #'^ ' is regex for 'starting with space'
  > vec[!grepl('^ ', vec)]
[1] "John"  "Tally" "hero" 

または @ NealFultz のコメントに従って:

> vec[grep('^ ', vec, invert=TRUE)]
[1] "John"  "Tally" "hero"

> grep('^ ', vec, invert=TRUE, value=TRUE)
[1] "John"  "Tally" "hero" 

または、使用したい場合startsWith

library(gdata)
#notice the minus sign below just before which
> vec[-which(startsWith(vec," "))]
[1] "John"  "Tally" "hero" 

または単に(@Gregorのコメントに従って):

> vec[!startsWith(vec, " ")]
[1] "John"  "Tally" "hero" 
于 2015-05-20T22:41:34.830 に答える
1

使用stringr:

> vec[!str_detect(vec, "^\\s")]
# [1] "John"  "Tally" "hero" 

使用stringi:

> vec[!stri_detect(vec, regex = "^\\s")]
# [1] "John"  "Tally" "hero" 
于 2015-05-20T23:33:26.027 に答える