我的數據集是類似以下如何刪除一行,有一個以空格開頭的字符串?
John
Tally
mac
hero
我想刪除與開始字符串「」
因此產生的變量將是
John
Tally
hero
我用
library(stringr)
which(startsWith(names[,1]," "))
以獲得具有「」的行
請幫我任何有效的方法來刪除它?
我的數據集是類似以下如何刪除一行,有一個以空格開頭的字符串?
John
Tally
mac
hero
我想刪除與開始字符串「」
因此產生的變量將是
John
Tally
hero
我用
library(stringr)
which(startsWith(names[,1]," "))
以獲得具有「」的行
請幫我任何有效的方法來刪除它?
一種方式與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"
參見'grep的(...,反轉= TRUE)' –
@NealFultz酷!謝謝,今天學到了新東西! – LyzandeR
np。另請參閱'grep(...,value = TRUE)',您可以將它歸結爲一個函數調用。 –
使用stringr
:
> vec[!str_detect(vec, "^\\s")]
# [1] "John" "Tally" "hero"
使用stringi
:
> vec[!stri_detect(vec, regex = "^\\s")]
# [1] "John" "Tally" "hero"
'startsWith'來自'gdata'不'stringr' – LyzandeR