首页 > 解决方案 > 从一列名称中创建一列首字母作为R中的字符串

问题描述

这是我想从中提取大写字母的示例df:

df <- data.frame(a = c(1:5), b = c("Words are Here", "Okay", "Be Good Now", "WTF are you Doing", "it's good"))

当我使用时,str_extract_all(df$b, "[A-Z]", simplify = )我会得到一个带有简化 = TRUE 的所有大写字母的列表:

    [,1] [,2] [,3] [,4]
[1,] "W"  "H"  ""   ""  
[2,] "O"  ""   ""   ""  
[3,] "B"  "G"  "N"  ""  
[4,] "W"  "T"  "F"  "D" 
[5,] ""   ""   ""   ""  

或使用简化 = FALSE:

[[1]]
[1] "W" "H"

[[2]]
[1] "O"

[[3]]
[1] "B" "G" "N"

[[4]]
[1] "W" "T" "F" "D"

[[5]]
character(0)

我不知道如何采用其中任何一个来获得我想要的输出,它是一个向量,例如:

("WH", "O", "BGN", "WTFD", "")

标签: r

解决方案


我们可以使用gsub匹配一个或多个不是大写的字符并将其替换为空白 ( "")

gsub("[^A-Z]+", "", df$b)
#[1] "WH"   "O"    "BGN"  "WTFD" ""    

推荐阅读