如何从R中的3个单词向量中获取中间词

时间:2016-08-23 08:54:16

标签: r vector

我有一个包含trigram的向量。 我想要中间的单词。 那是什么方法或正则表达式? 示例: 我有一个矢量z,其数据类似

[1] "adn afn grdsg"
[2] "sfnds enfsi sekj"
[3] "ajsf aser afgbt"
.
.
.

我的结果回答了以下的载体

[1] "afn" "enfsi" "aser" 
[4] ....
像这样。

3 个答案:

答案 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")