我试图从一些推文中提取所有主题标签,并为每个推文获取包含所有主题标签的单个字符串。
我正在使用str_extract
中的stringr
,因此我获得了一个字符向量列表。我的问题是我没有设法取消它并保留相同数量的列表元素(即推文的数量)。
例如:
这是长度为3的推文的矢量:
a <- "rt @ugh_toulouse: #mondial2014 : le top 5 des mannequins brésiliens http://www.ladepeche.fr/article/2014/06/01/1892121-mondial-2014-le-top-5-des-mannequins-bresiliens.html #brésil "
b <- "rt @30millionsdamis: beauté de la nature : 1 #baleine sauve un naufragé ; elles pourtant tellement menacées par l'homme... http://goo.gl/xqrqhd #instinctanimal "
c <- "rt @onlyshe31: elle siège toujours!!!!!!! marseille. nouveau procès pour la députée - 01/06/2014 - ladépêche.fr http://www.ladepeche.fr/article/2014/06/01/1892035-marseille-nouveau-proces-pour-la-deputee.html #toulouse "
all <- c(a, b, c)
现在我使用str_extract_all
来提取主题标签:
ex <- str_extract_all(all, "#(.+?)[ |\n]")
如果我现在使用unlist
,我会得到一个长度为5的向量:
undesired <- unlist(ex)
> undesired
[1] "#mondial2014 " "#brésil "
[3] "#baleine " "#instinctanimal "
[5] "#toulouse "
我想要的是以下内容。然而,这是非常低效,因为它没有矢量化,并且它需要永远(真的!)在推文的一个小数据框架上:
desired <- c()
for (i in 1:length(ex)){
desired[i] <- paste(ex[[i]], collapse = " ")
}
> desired
[1] "#mondial2014 #brésil "
[2] "#baleine #instinctanimal "
[3] "#toulouse "
帮助!
答案 0 :(得分:2)
您可以使用stringi
,这对于大数据集可能更快
library(stringi)
sapply(stri_extract_all_regex(all, '#(.+?)[ |\n]'), paste, collapse=' ')
#[1] "#mondial2014 #brésil " "#baleine #instinctanimal "
#[3] "#toulouse "
如果您for
输出preassign
的长度desired
desired <- numeric(length(ex))
for (i in 1:length(ex)){
desired[i] <- paste(ex[[i]], collapse = " ")
}
循环可以很快
vapply
或者您可以使用sapply
,这比[{1}}更快,更安全一些(由@Richie Cotton提供)
vapply(ex, toString, character(1))
#[1] "#mondial2014 , #brésil " "#baleine , #instinctanimal "
#[3] "#toulouse "
或者@Ananda Mahto建议
vapply(stri_extract_all_regex(all, '#(.+?)[ |\n]'),
stri_flatten, character(1L), collapse = " ")