从R中的字符串中提取主题标签时出错

时间:2016-12-12 21:56:11

标签: r

我正在尝试从R中的字符串中提取主题标签,但无法解决以下错误:

(示例集):

我有一个数据框'MyData',其中一列包含推文的文本(名为'tweets'),还有一个空列,我想在其中放置每个推文中包含的主题标签(名为'hashtags')。

View(MyData)
tweets                            hashtags
hello #test1
hello #test2 goodbye #test3

我按如下方式提取主题标签:

MyData$hashtags <- as.character(str_extract_all(MyData$tweets, "#\\S+))

这给了我:

View(MyData)
tweets                          hashtags
hello #test1                    #test1
hello #test2 goodbye #test3     c("#test2","#test3")

但是,我希望显示器只是:

View(MyData)
tweets                          hashtags
hello #test1                    #test1
hello #test2 goodbye #test3     #test2, #test3

毫无疑问,这是一个非常简单的错误,但无论我使用什么提取方法(我尝试过多次),带有多个主题标签的推文总是被c包围(“”,“”,...... )。

有人可以推荐一种方法来提取所需格式的主题标签,或者之后改变输出吗?

感谢您的帮助。

1 个答案:

答案 0 :(得分:2)

这个怎么样

#sample data
MyData<-read.table(text="tweets
hello #test1
hello #test2 goodbye #test3", comment="", header=T, sep="\t")

现在使用paste()逗号加入您的搜索结果

MyData$hashtags <- sapply(str_extract_all(MyData$tweets, "#\\S+"), paste, collapse=", ")
MyData
#                        tweets       hashtags
# 1                hello #test1         #test1
# 2 hello #test2 goodbye #test3 #test2, #test3

这是有效的,因为str_extract_all返回一个字符向量列表。不是使用as.character转换该列表,而是使用paste(, collapse=),我们可以控制这些值的折叠方式并使其保持良好的字符向量。