我正在查看一个字符串是否只包含空格。该字符串可能是检查一个字符串是否包含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