如何使用 stringr 函数删除所有空字?

Ibr*_*mli 5 r

b <- c("books",  "  ",  "animals",  "frogs")

#My code: 
b[!grepl("^\\s+$", b)]
[1] "books"   "animals" "frogs"   

#Now, I am working to figure out this solution with stringr package.
str_remove_all(b, "^\\s+$")
[1] "books"   ""          "animals" "frogs" 
Run Code Online (Sandbox Code Playgroud)

输出显示""我的新代码失败的地方。有什么解决方案可以得到像我的第一个代码一样的结果吗?

akr*_*run 3

我们可以用str_subset在stringr

library(stringr)
str_subset(b, "^\\s+$", negate = TRUE)
[1] "books"   "animals" "frogs"  
Run Code Online (Sandbox Code Playgroud)

对应的函数grepl是str_detect

b[str_detect(b, "^\\s+$", negate = TRUE)]
[1] "books"   "animals" "frogs" 
Run Code Online (Sandbox Code Playgroud)

在 中base R,我们可以使用grepwithinvert = TRUE

grep("^\\s+$", b, invert = TRUE, value = TRUE)
[1] "books"   "animals" "frogs"  
Run Code Online (Sandbox Code Playgroud)

或者没有正则表达式trimws(删除空格 - 前导/滞后)并用于nzhcar创建用于子集化的逻辑向量

b[nzchar(trimws(b))]
[1] "books"   "animals" "frogs"  
Run Code Online (Sandbox Code Playgroud)