我有这个数据框:
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"
答案 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,此模式构建如下:
(?<=\\s)
检查(?=\\s)
检查(.*)
提取空格之间的所有内容答案 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"