我正在使用R并拥有大量的推文数据框。我想要一个grep调用,它会选择仅由hashtags组成的推文(想要从最终的数据帧中排除这些)。
我最初的努力:
hashtagonly_tweets_INDEX = grep("^#\\w*[^\\w]", allTweets$V1,
value=F,
ignore.case = T,
fixed=F)
我希望这会选择以hashtag ^#\ w *开头的多个单词,而不是选择没有主题标签的单词[^ \ w]。
然而,由于此类收集的推文类型仍然包含主题标签中的文本,我显然已经耗尽了人才,例如:
#wtf现在正在发生。这辆卡车在高速公路中心行驶50路。 #learntodrive
#WhatGrindsMyGears当有人在我面前退出时,永远不会进入速度限制或以上。 #roadrage
<#>#Waymin #Vestminster #travel #roadrage #transport #London #tourism #sightseeing #dark #clouds
任何建议都非常感谢,
感谢
答案 0 :(得分:3)
我不确定我是否理解你的问题,这里的正则表达式只匹配只包含主题标签的推文:
^\s*(?:#\w+\s*)+$
答案 1 :(得分:1)
要确定特定推文是否只有主题标签,您可以使用strsplit对其进行标记,然后在列表中搜索不以&#34;#&#34;开头的条目。考虑tweet1(只有hashtags)和tweet2(hashtags加上单词)。
tweet1 <- "#Traffic #in #Westminster #travel #roadrage #transport #London #tourism #sightseeing #dark #clouds"
tweet2 <- "#Traffic in #Westminster #travel #roadrage #transport #London #tourism #sightseeing #dark #clouds"
haswords <- function(tweet) {
strings <- strsplit(tweet,' ')
for (word in 1:length(strings[[1]])) {
if (substring(strings[[1]][word],1,1) != '#') {
return (TRUE)
}
}
FALSE
}
函数haswords()
为tweet2返回TRUE,为tweet1返回FALSE。