我想看看一个字符串是否只包含空格。字符串可以是
" "
或
" "
或
" "
等...
我想这样做,所以我可以将数据框中的值更改为NA,因为我的目标是修复/清理混乱的数据。
谢谢
答案 0 :(得分:9)
您可以尝试grepl
:
grepl("^\\s*$", your_string)
"^\\s*$"
在字符串的开头(*
)和结尾(\\s
)之间要求0个或更多(^
)个空格($
)。 / p>
<强>实施例强>
grepl("^\\s*$", " ")
#[1] TRUE
grepl("^\\s*$", "")
#[1] TRUE
grepl("^\\s*$", " ")
#[1] TRUE
grepl("^\\s*$", " ab")
[1] FALSE
注意:您也可以在正则表达式中使用空格而不是\\s
("^\\s*$"
)。
答案 1 :(得分:5)
如果没有正则表达式,您可以使用
which(nchar(trimws(vec))==0)
函数trimws()
从字符串中删除尾随和前导空格字符。因此,如果在使用trimws
后,字符串的长度(由nchar()
确定)不为零,则该字符串至少包含一个非空白字符。
示例:
vec <- c(" ", "", " "," a ", " ", "b")
which(nchar(trimws(vec))==0)
#[1] 1 2 3 5
向量vec
的条目1,2,3和5为空或仅包含空格字符。
根据Richard Scriven的建议,只需使用nchar()
(或trimws(vec)==""
,取决于所需的输出,即可在不调用which(trimws(vec)=="")
的情况下获得相同的结果:前者导致布尔值的矢量,后者在空白/空条目的索引号中。)