【问题标题】:How to get a hyperlink for the words in a description in an r dataframe?如何获取 r 数据框中描述中单词的超链接?
【发布时间】:2019-08-17 03:36:31
【问题描述】:

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

我已经尝试过 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])
  }
}

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

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

【问题讨论】:

    标签: r loops hyperlink pattern-matching gsub


    【解决方案1】:

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

    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)
    

    如果打算在“描述”中插入链接

    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"       
    

    【讨论】:

    • 这行得通。谢谢你。有没有办法在描述中超链接 Java 和 python py 这个词。但它应该分别重定向到网址的 www.google.com/java 和 www.google.com/python py。
    • 为此,您可能需要一些其他软件包,例如 here
    猜你喜欢
    • 1970-01-01
    • 2017-05-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-21
    • 2020-12-05
    • 1970-01-01
    • 2021-01-02
    相关资源
    最近更新 更多