如何获取 r 数据框中描述中单词的超链接?

How to get a hyperlink for the words in a description in an r dataframe?

我有一个包含文字和描述的数据框。要求是检查描述中是否存在单词列中的任何单词。基本上,我们必须 运行 所有描述中的所有单词,如果这些单词存在,我们必须超 link 描述中的那些单词。

我已经按照代码所示尝试了 gsub。这是一个例子。实际数据约30k行。

data = data.frame("word"=c('python py', 'java'),
  "description"=c('Java is a statically typed and Python py is a dynamically typed', 'java is a programming language'))

ll <- as.list(data$word)

for (i in 1:nrow(data)){
  for (j in ll){
    url <- paste0("http://www.google.com/ ",j)
    data$new[i] <- gsub(j,url,data$description[i])
  }
}

它只更新最后一行,我不确定如何使它成为 link。

预期的结果是使描述中的单词 python 和 java 可点击 link。在后台它必须重定向到 url(例如:www.google.com/python py(对于 python py)/www.google.com/java (对于 java))

一个选项是 stringr 中的 str_replace,它可以通过在替换中传递值向量来替换相应的元素。

library(stringr)
data = data.frame("word"=c('python py', 'java'), 
 "description"=c('Java is a statically typed and Python py is a dynamically typed',
     'java is a programming language'), stringsAsFactors = FALSE)

如果打算在 'description'

中插入 link
pat <- str_c("\b(?i)(", data$word, ")\b")
str_replace(data$description, pat, "http://www.google.com/\1") 
#[1] "Java is a statically typed and http://www.google.com/Python py is a dynamically typed"
#[2] "http://www.google.com/java is a programming language"  

更新

用于替换所有出现的单词

data$new <- data$description
for(i in seq_len(nrow(data))) for(j in seq_along(ll)) {
   url <- paste0("http://www.google.com/",ll[[j]])
   data$new[i] <- sub(ll[[j]], url, data$new[i], ignore.case = TRUE)
   }

data$new
#[1] "http://www.google.com/java is a statically typed and http://www.google.com/python py is a dynamically typed"
#[2] "http://www.google.com/java is a programming language"