Hello Stack Overflow社区 我正在尝试使用以下代码从Wikipedia检索文章数据
问题在于它没有将函数的结果封装在数据框中。
library(tidyverse)
library(glue)
library(XML)
library(RCurl)
# Function
wiki_data <- function(data,end_url="Tensorflow"){
html <- getURL(glue("https://en.wikipedia.org/wiki/{end_url}"), followlocation = TRUE)
# parse html
doc = htmlParse(html, asText=TRUE)
plain.text <- xpathSApply(doc, "//p", xmlValue)
cat(paste(plain.text, collapse = "\n"))
}
#Creation of data frame
df <- data.frame(items=c("Tensorflow","Data"))
#Applying the function
df %>%
mutate(test=wiki_data(items,end_url = items))
结果将是具有两列的数据框,一个项目,另一个项目,该函数的结果(维基百科结果)。 感谢您的帮助!
答案 0 :(得分:2)
您的函数不返回任何内容。您可以将结果保存在res
中。此外,您在函数中不需要data
参数。我假设您使用了RCurl
和XML
库。
wiki_data <- function(end_url){
require(XML)
require(RCurl)
require(glue)
html <- getURL(glue("https://en.wikipedia.org/wiki/{end_url}"), followlocation = TRUE)
# parse html
doc <- htmlParse(html, asText=TRUE)
plain.text <- xpathSApply(doc, "//p", xmlValue)
res <- paste(plain.text, collapse = "\n")
return(res)
}
这不是最优雅的解决方案,但它应该可以工作。
然后,您可以使用rowwise()
来应用您的功能:
library(dplyr)
df <- df %>%
rowwise() %>%
mutate(test = wiki_data(items))