R编程中的Hashtag Extract函数

时间:2016-08-05 11:46:51

标签: r function if-statement hashtag

我正在尝试在R中创建一个hashtag提取函数。这个函数将从一个帖子中提取一个hashtags,如果有的话,否则会给出一个空白。我的功能就像

hashtag_extract= function(text){
              match = str_extract_all(text,"#\\S+")
              if (match) { 
                 return match
                 }else{
               return ''}}
String="#letsdoit #Tonewbeginnign world is on a new#route

但我的功能不起作用,显示出大量的错误。比如第一个错误是

Error: unexpected symbol in:
      "  if (match) { 
     return match"

所以我想将其应用为

hashatag_extract(string)

并且答案应该像

一样
#letsdoit  ##Tonewbeginnign   #route

最终我将使用sapply在整列上应用此函数,这就是If部分很重要的原因。请忽略我对R的缩进,因为它对R不重要,但每个建议都会有所帮助

3 个答案:

答案 0 :(得分:11)

  1. Hashtag regex并不是那么简单
  2. 我不确定你理解hashtags的普遍接受的“规则”
  3. 我不相信str_extract_all()正在回归你的想法
  4. 只需使用stringi {/ 1}}功能构建于
  5. 之上
  6. 民众需要停止分析推文
  7. 这应该处理大多数(如果不是全部)情况:

    stringr

    如果你需要将每组主题标签与每个输入向量分组,你需要调整该函数,但是你真的没有详细说明你真正想要完成的事情。

答案 1 :(得分:1)

@manu sharma我会说你不需要在里面申请。让不匹配的行取值为' NA'。应用该功能后,将其更改为空白。 希望我的代码可以帮助您:

   aaa <- readLines("C:\\MY_FOLDER\\NOI\\file2sample.txt")
 ttt <- function(x){

  r <- sapply(x, function(x) { matches <- str_match(x,"#\\w+\\s+")})
  r


  }

 y <-ttt(aaa)
 y[is.na(y)]=''

答案 2 :(得分:0)

感谢所有人的帮助,我得到了它的工作方式,认为它与Shalini的答案几乎相似 1.替换消息上的所有NAs

 int n = new Random().Next(5, 10);

2.提取Hashtags的功能

message[is.na(message)]='abc'

在整列上应用函数

hashtag_extrac= function(text){
match = str_extract_all(text,"#\\S+")
if (match!= "") { 
match
} else {
'' }}