У меня есть фрейм данных, который выглядит следующим образом:
link <- c("http://www.sciencedirect.com/science/article/pii/S1042957318300366", "http://www.sciencedirect.com/science/article/pii/S1042957318300664", "http://www.sciencedirect.com/science/article/pii/S1042957318300627", "http://www.sciencedirect.com/science/article/pii/S002205311830156X", "http://www.sciencedirect.com/science/article/pii/S1090951618303419", "http://hdl.handle.net/10.1093/jjfinec/nby006")
repec_id <- c("RePEc:eee:jfinin:v:38:y:2019:i:c:p:19-44", "RePEc:eee:jfinin:v:38:y:2019:i:c:p:1-10", "RePEc:eee:jfinin:v:38:y:2019:i:c:p:58-68", "RePEc:eee:jetheo:v:182:y:2019:i:c:p:329-359", "RePEc:eee:worbus:v:54:y:2019:i:4:p:372-386", "RePEc:oup:jfinec:v:17:y:2019:i:3:p:462-494")
df <- data.frame(repec_id, link)
У меня есть oop, который берет каждую из ссылок и загружает файл, к которому ведет (или возвращает предупреждение / сообщение об ошибке, если ссылка не работает). Выглядит это так:
urls <- df$link
output <- rep(NA, length(urls))
for (i in seq_along(urls)) {
output[i] <- tryCatch(
{download.file(urls[i], paste0('~/Desktop/Dataset/', basename(urls[i])))},
error = function(e) {NA},
warning = function(w) {NA}
)
}
Однако вместо того, чтобы называть файл с помощью функции basename
, я бы хотел присвоить соответствующий repec_id
, за которым следует соответствующее расширение (например, «.pdf», '.txt' и др. c). Другими словами, я хотел бы, чтобы каждый загружаемый файл имел соответствующее repec_id
в качестве имени:
list.files()
"RePEc:eee:jfinin:v:38:y:2019:i:c:p:19-44.pdf" "RePEc:eee:jfinin:v:38:y:2019:i:c:p:1-10.txt" "RePEc:eee:jfinin:v:38:y:2019:i:c:p:58-68.aspx" "RePEc:eee:jetheo:v:182:y:2019:i:c:p:329-359.pdf" "RePEc:eee:worbus:v:54:y:2019:i:4:p:372-386.pdf" "RePEc:oup:jfinec:v:17:y:2019:i:3:p:462-494.txt"
Кто-нибудь знает, как я могу это сделать? Я немного застрял. Заранее спасибо за помощь!