我有一个for循环,我在其中提取网址中的文件名,然后下载并保存文件:
for(url in filing.urls) {
m = regexpr("\\d+-\\d+-\\d+\\.txt",url,perl=T)
file.name = regmatches(url,m)
download.file(url, destfile=paste("filings/",file.name, sep=""), method="curl")
}
我想知道是否可以使用apply在一行中构建所有file.names
?它可能会使代码更具可读性。
答案 0 :(得分:1)
如果filing.urls
是向量:
f <- function(url)
regmatches(url, regexpr("\\d+-\\d+-\\d+\\.txt",url,perl=T))
file.names <- sapply(filin.urls, f)
答案 1 :(得分:1)
假设在第一个数字之前至少有一个字符,这似乎更简单:
lapply(filing.urls, function(url)
download.file(url,
destfile = sub("(.*\\D)\\d+-\\d+-\\d+\\.txt", "filings/", url),
method = "curl"
)
)