在空格之间提取字符串

时间:2017-10-07 08:56:05

标签: r

我有这个数据框:

df <-c("AA AAAA 1B","A BBB 1", "CC RR 1W3", "SS RGTYC 0")
[1] "AA AAAA 1B" "A BBB 1" "CC RR 1W3" "SS RGTYC 0"

我想提取空格之间的内容。

期望的结果:

[1] "AAAA" "BBB" "RR" "RGTYC"

3 个答案:

答案 0 :(得分:2)

df <- c("AA AAAA 1B","A BBB 1", "CC RR 1W3", "SS RGTYC 0")

lst <- strsplit(df," ")
sapply(lst, '[[', 2) 
#  [1] "AAAA"  "BBB"   "RR"    "RGTYC"

答案 1 :(得分:2)

您可以使用stringr - 包直接提取它,而不是先拆分然后再选择相关的拆分:

library(stringr)

str_extract(df, "(?<=\\s)(.*)(?=\\s)")
# [1] "AAAA"  "BBB"   "RR"    "RGTYC"

此解决方案使用regular expressions,此模式构建如下:

  1. (?<=\\s)检查
  2. 之前是否有空格
  3. (?=\\s)检查
  4. 后是否有空格
  5. (.*)提取空格之间的所有内容

答案 2 :(得分:1)

以下是基于gsub的方法(来自base R)。我们从字符串的开头(^)开始匹配一个非白色空格,后跟一个或多个空格或(|)一个或多个空格,后跟非白色空格。字符串($)并将其替换为空白(""

gsub("^\\S+\\s+|\\s+\\S+$", "", df)
#[1] "AAAA"  "BBB"   "RR"    "RGTYC"

word

还有一个方便的功能stringr
stringr::word(df, 2)
#[1] "AAAA"  "BBB"   "RR"    "RGTYC"