如何获取 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"
我有一个包含文字和描述的数据框。要求是检查描述中是否存在单词列中的任何单词。基本上,我们必须 运行 所有描述中的所有单词,如果这些单词存在,我们必须超 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'
中插入 linkpat <- 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"