Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/79.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R-将函数应用于正则表达式匹配_R_Regex_Gsub - Fatal编程技术网

R-将函数应用于正则表达式匹配

R-将函数应用于正则表达式匹配,r,regex,gsub,R,Regex,Gsub,假设我有这样一个字符串: txt <- "This is an example of a Tweet with a #HashTag." txt 如果可能的话,上面的函数会将hashtag分解为组成词,如果不是因为它包含所有大写字母,则会将其标记为组成词 我该怎么做?如果有更好的方法,我也愿意这样做。tweet\u preprocessor=function(tweets\u txt){ tweet_preprocessor = function(tweets_txt) { pp_h

假设我有这样一个字符串:

txt <- "This is an example of a Tweet with a #HashTag."
txt
如果可能的话,上面的函数会将hashtag分解为组成词,如果不是因为它包含所有大写字母,则会将其标记为组成词

我该怎么做?如果有更好的方法,我也愿意这样做。

tweet\u preprocessor=function(tweets\u txt){
tweet_preprocessor = function(tweets_txt) {
  pp_hashtag = function(hashtag) {
    hashtag = substring(hashtag, 2)
    paste("<hashtag>", ifelse(
      grepl("^[[:upper:]]+$", hashtag),
      paste(hashtag, "<allcaps>"),
      gsub("(?<!^)(?=[A-Z])", " ", hashtag, perl = T)
    ))
  }
  gr = gregexpr("#\\w+", tweets_txt, perl = T)
  mat = regmatches(tweets_txt, gr)
  regmatches(tweets_txt, gr) = lapply(mat, pp_hashtag)
  tweets_txt
}
pp_hashtag=函数(hashtag){ hashtag=子字符串(hashtag,2) 粘贴(“”,如果有( grepl(“^[:upper:][]+$”,hashtag), 粘贴(标签“”),
gsub(“(?您希望得到什么结果?。您能显示您的预期输出吗?您的代码返回
”这是一个带有哈希标记的Tweet示例。“
-这是预期输出吗?我尝试了另一种解决方案,得到了
”这是一个带有哈希标记的Tweet示例。“
。请澄清是否需要将
#
替换为
,然后在每个大写字母前插入空格,但第一个大写字母除外?”?
tweet_preprocessor = function(tweets_txt) {
  pp_hashtag = function(hashtag) {
    hashtag = substring(hashtag, 2)
    paste("<hashtag>", ifelse(
      grepl("^[[:upper:]]+$", hashtag),
      paste(hashtag, "<allcaps>"),
      gsub("(?<!^)(?=[A-Z])", " ", hashtag, perl = T)
    ))
  }
  gr = gregexpr("#\\w+", tweets_txt, perl = T)
  mat = regmatches(tweets_txt, gr)
  regmatches(tweets_txt, gr) = lapply(mat, pp_hashtag)
  tweets_txt
}