检查字符串是否包含R中的所有空格

时间:2016-03-01 14:57:59

标签: r string whitespace

我想看看一个字符串是否只包含空格。字符串可以是

"  "

"           "

"              " 

等...

我想这样做,所以我可以将数据框中的值更改为NA,因为我的目标是修复/清理混乱的数据。

谢谢

2 个答案:

答案 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)=="")的情况下获得相同的结果:前者导致布尔值的矢量,后者在空白/空条目的索引号中。)