Kas*_*rah 4 string whitespace r
我想看一个字符串是否只包含空格.字符串可以是
" "
Run Code Online (Sandbox Code Playgroud)
要么
" "
Run Code Online (Sandbox Code Playgroud)
要么
" "
Run Code Online (Sandbox Code Playgroud)
等等...
我想这样做,所以我可以将数据框中的值更改为NA,因为我的目标是修复/清理混乱的数据.
谢谢
Cat*_*ath 10
您可以尝试grepl:
grepl("^\\s*$", your_string)
Run Code Online (Sandbox Code Playgroud)
"^\\s*$"在string的begin()和end()之间请求0或更多(*)的空格(\\s).^$
例子
grepl("^\\s*$", " ")
#[1] TRUE
grepl("^\\s*$", "")
#[1] TRUE
grepl("^\\s*$", " ")
#[1] TRUE
grepl("^\\s*$", " ab")
[1] FALSE
Run Code Online (Sandbox Code Playgroud)
注意:您也可以使用空格而不是\\s正则表达式("^\\s*$").
没有正则表达式,你可以使用
which(nchar(trimws(vec))==0)
Run Code Online (Sandbox Code Playgroud)
该函数trimws()从字符串中删除尾随和前导空白字符.因此,如果在使用trimws字符串的长度(由...确定nchar())不为零之后,该字符串包含至少一个非空白字符.
例:
vec <- c(" ", "", " "," a ", " ", "b")
which(nchar(trimws(vec))==0)
#[1] 1 2 3 5
Run Code Online (Sandbox Code Playgroud)
向量的条目1,2,3和5 vec是空的或仅包含空格字符.
正如Richard Scriven所建议的那样nchar(),通过简单地使用trimws(vec)==""(或者which(trimws(vec)==""),取决于期望的输出:前者导致布尔值的向量,后者在空白/空条目的索引号中),可以在不调用的情况下获得相同的结果.