我正在使用R,并且有大量的推文数据帧。我想要一个 grep 调用,它将选择仅由主题标签组成的推文(希望从最终数据框中排除这些)。
我最初的 grep 努力:
hashtagonly_tweets_INDEX = grep("^#\w*[^\w]", allTweets$V1,
value=F,
ignore.case = T,
fixed=F)
我希望这会选择多个以主题标签 ^#\w* 开头的单词,而不是选择没有主题标签 [^\w] 的单词。
但是,在这一点上,我显然已经耗尽了人才,因为此收集的推文类型仍然包含主题标签中的文本,例如:
#wtf 现在甚至正在发生。 这辆卡车在高速公路中心行驶50。 #learntodrive
#WhatGrindsMyGears 当有人在我面前拉出来时,永远不会继续达到限速或更高。 #roadrage
#Traffic #Westminster #travel #roadrage #transport #London #tourism #sightseeing #dark #clouds
任何建议非常感谢,
谢谢
不确定我是否理解您的问题,这是一个正则表达式,它匹配仅包含主题标签的推文:
^s*(?:#w+s*)+$
若要确定特定推文是否只有主题标签,可以使用 strsplit 对其进行标记,然后在列表中搜索不以"#"开头的条目。考虑推文1(仅主题标签)和推文2(主题标签加单词)。
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()
为推文 2 返回 TRUE,为推文 1 返回 FALSE。