我是R编程的新手。 我废弃下面一个网络表的代码有效。
library(XML)
balsht <- "http://www.theedgemarkets.com/my/AA/balance_sheet?0=2593&exchange=KLSE"
balstable <- readHTMLTable(balsht, header=T, which=1,stringsAsFactors=F)
balstable
write.table(balstable, "balsht-2593.txt", row.name=FALSE)
我的问题是我希望一次性获得5个表,只有url中的数字(即2593)不同(url中的其余字符相同),并使用该数字作为文件名的一部分进行写入。 table命令。
例如,假设随机数为0081,0126,3379,6149&amp; 9997。
尝试在此处建议的解决方案 Scraping multiple table out of webpage in R 但得到了这个错误:curl :: curl_fetch_memory(url,handle = handle)出错: 已达到超时
请详细说明如何使用循环或任何可用的行命令来解决它。谢谢。
答案 0 :(得分:2)
您可以使用lapply
:
tab.nums <- c("0081", "0126", "3379", "6149", "9997")
# construct urls
balsht <- paste0("http://www.theedgemarkets.com/my/AA/balance_sheet?0=",
tab.nums, "&exchange=KLSE")
# get list of tables
balstables <- lapply(balsht,
function(x) readHTMLTable(x, header=T, which=1,stringsAsFactors=F))
# save each table using relevant number
lapply(seq_along(balsht),
function(x) write.table(balstables[[x]], paste0("balsht", tab.nums[x], ".txt"), row.name=FALSE))