Основным ограничивающим фактором, вероятно, будет время, затраченное на запрос веб-сайта. В настоящее время вы ждете, пока каждый запрос вернет результат, прежде чем выполнять следующий. Лучший способ ускорить рабочий процесс - это выполнять пакеты запросов параллельно.
Если вы используете систему Unix, вы можете попробовать следующее:
### Packages ###
library(parallel)
### On your example ###
abc <- unlist(mclapply(websites[[1]], Updated, mc.cores = 3))
### On a larger number of sites ###
abc <- unlist(mclapply(websites[[1]], Updated, mc.cores = detectCores())
### You can even go beyond your machine's core count ###
abc <- unlist(mclapply(websites[[1]], Updated, mc.cores = 40))
Однако , точное количество потоков, которыми вы насыщаете свой процессор / соединение rnet, зависит от вашего компьютера и вашего соединения.
В качестве альтернативы, если вы застряли на Windows:
### For a larger number of sites ###
cl <- makeCluster(detectCores(), type = "PSOCK")
clusterExport(cl, varlist = "websites")
clusterEvalQ(cl = cl, library(httr))
abc <- parSapply(cl = cl, X = websites[[1]], FUN = Updated, USE.NAMES = FALSE)
stopCluster(cl)
В случае кластеров PSOCK я не уверен, есть ли какие-то преимущества от превышения количества ядер вашей машины, хотя я не человек Windows и приветствую любые исправления.