我有一个包含trigram的向量。 我想要中间的单词。 那是什么方法或正则表达式? 示例: 我有一个矢量z,其数据类似
[1] "adn afn grdsg"
[2] "sfnds enfsi sekj"
[3] "ajsf aser afgbt"
.
.
.
我的结果回答了以下的载体
[1] "afn" "enfsi" "aser"
[4] ....
像这样。
答案 0 :(得分:2)
如果你想要一个baseR解决方案,你可以先按空格分割字符串,给出一个列表,然后将该列表折叠回向量并选择第二个元素:
> unlist(strsplit(x, " "))[2]
[1] "afn"
数据:强>
x <- "adn afn grdsg"
答案 1 :(得分:2)
我们可以使用word
stringr
library(stringr)
word(str1, 2)
#[1] "afn" "enfsi" "aser"
或str_extract
str_extract(str1, "(?<=\\s)\\w+(?=\\s)")
#[1] "afn" "enfsi" "aser"
或者另一个选项是sub
以匹配第二组非空白字符,捕获为字符串并在替换中使用反向引用(\\1
)。
sub("\\S+\\s+(\\S+)\\s+.*", "\\1", str1)
#[1] "afn" "enfsi" "aser"
str1 <- c( "adn afn grdsg", "sfnds enfsi sekj", "ajsf aser afgbt")
答案 2 :(得分:1)
除了已经发布的答案,我们可以用它来概括,
library(stringr)
word(x, str_count(x, '\\w+')%/%2+1)
#[1] "grdsg" "enfsi"
其中,
x <- c('adn afn grdsg fdgdg dghd', "sfnds enfsi sekj")