我正在查看一個字符串是否只包含空格。該字符串可能是檢查一個字符串是否包含R中的所有空白空間
" "
或
" "
或
" "
等等
我想這樣做,這樣我就可以在數據幀更改值不適用,因爲我的目標是修復/清理混亂的數據。
謝謝
我正在查看一個字符串是否只包含空格。該字符串可能是檢查一個字符串是否包含R中的所有空白空間
" "
或
" "
或
" "
等等
我想這樣做,這樣我就可以在數據幀更改值不適用,因爲我的目標是修復/清理混亂的數據。
謝謝
沒有正則表達式,你可以使用
which(nchar(trimws(vec))==0)
功能trimws()
消除拖尾和字符串中的前導空格字符。因此,如果在使用trimws
後,字符串的長度(由nchar()
確定)不爲零,則該字符串至少包含一個非空白字符。
實施例:
vec <- c(" ", "", " "," a ", " ", "b")
which(nchar(trimws(vec))==0)
#[1] 1 2 3 5
中的條目1,2,3,和5中的矢量vec
的或者是空的,或者只包含空白字符。在布爾值的向量前者的結果,後者在:
如理查德斯克裏芬建議的,可以不調用nchar()
,通過簡單地使用trimws(vec)==""
(或which(trimws(vec)=="")
,這取決於所需的輸出所獲得的相同的結果空白/空條目的索引號)。
您可以grepl
嘗試:
grepl("^\\s*$", your_string)
"^\\s*$"
請求開始(^
)和字符串的結尾($
)之間的0個或多個(*
)空間(\\s
)。
例子
grepl("^\\s*$", " ")
#[1] TRUE
grepl("^\\s*$", "")
#[1] TRUE
grepl("^\\s*$", " ")
#[1] TRUE
grepl("^\\s*$", " ab")
[1] FALSE
注:您也可以只用一個空格代替\\s
在正則表達式("^\\s*$"
)。
更好的正則表達式會是 'grepl(「\\ s +」,your_string,perl = True)'+強制它匹配1個空格。 – Seekheart
@Seekheart它實際上是爲什麼我首選'*',所以它也檢查空字符串,我認爲OP可能還想要空字符串被發現(並進一步修改爲「NA」)(順便說一句,你的不會工作沒有指定字符串的開始和結束,你不需要使用perl選項,TRUE必須使用大寫字母;-)) – Cath