R函数将不会修改全局变量
问题描述:
我有一段简单的R代码,它从一个网站读取html数据,然后我尝试遍历页面并从每个页面获取数据。我已经无数次地使用了这段代码,它很有用。它将来自每个页面的结果添加到R变量中,但由于某种原因,它不能工作。有任何想法吗?R函数将不会修改全局变量
library(XML)
library(RCurl)
data <- NULL
getData <- function(url) {
#For some reason cant read directly from site, need to use RCurl to get the data first
xData <- getURL(url)
table <- data.frame(readHTMLTable(xData)$'NULL')
data <- table
}
getData(url="https://steemdb.com/accounts/reputation?page=1")
答
我想我知道什么是错
变化data <- table
到data <<- table
你的函数
您将结果分配给该函数的局部环境中,而<<-
将其分配给全球环境。
我建议您尝试以下
library(rvest)
getData <- function(url) { html_table(read_html(url)) }
data <- getData("https://steemdb.com/accounts/reputation?page=1")
甚至更好
library(rvest)
getData <- function(url) { html_table(read_html(url)) }
steemdb.url <-"https://steemdb.com/accounts/reputation?page="
data <- lapply(1:100, function(i) getData(paste0(steemdb.url, i)))
data <- do.call(rbind, data)
View(data)
1:100 will get you the first 100 pages.
+0
感谢dimitris_ps,只是编辑你的代码do.call(rbind,data)需要做两次才能工作。谢谢您的帮助。 – Kharoof
X Indi
如何为函数添加'return(data)'?我不会建议混合全球环境和功能环境。 –