Как бы я использовал Tidyverse, чтобы улучшить свой assign, do.call и код цикла? - PullRequest
0 голосов
/ 26 сентября 2018

Я не делал R-кодирование годами.Я пенсионер и простой программист-любитель;поэтому, когда я пишу код, я полагаюсь на «грубую силу», старомодный процедурный код.

У меня есть небольшой объем кода, который работает для того, что я хочу.Однако, по сравнению с тем, что я вижу в наши дни, это неуклюже и безобразно.Я надеюсь, что кто-то будет достаточно любезен, чтобы предложить предложения по обновлению этого кода.

Я использую пакет nflscrapR для доступа к данным для личных, хобби целей (например, отслеживание того, какой QB борется за свою жизнь в эти дни?Как часто? И по сравнению с кем?).

В приведенном ниже примере кода используются данные идентификатора игры для доступа к сводным данным игры (но меня по-настоящему интересует информация об игре по игре).Я создаю имена переменных dataframe из идентификаторов игр, загружаю данные, сохраняю их в dataframe, затем записываю эти данные в файл .csv и, наконец, объединяю эти файлы в один недельный файл.(Я вручную устанавливаю переменную «k» один раз в неделю, меняю каталоги пару раз в коде, и мои имена файлов выглядят ужасно.) Меня больше всего интересует улучшенное создание и присвоение переменных и более экономное «зацикливание».

######  Weekly game summary script  #######
library(nflscrapR)
k <- 3

setwd("./nflscrapeR/GameIDs/2018 Game IDs")
gameID.File <- read.csv(file = paste("2018 Week ", k, " GameIDs.csv", sep = ""))
gameID.list <- gameID.File$game_id
res <- paste0("ds", gameID.list, sep = "")

setwd(paste("./nflscrapeR/GameSummary/Week ", k, sep = ""))

for(i in 1:length(res)){
  write.csv(assign(res[[i]],drive_summary(gameID.list[[i]])), file = paste(res[[i]], ".csv", sep = ""), row.names = FALSE)
}

file_names <- dir()
weeklysummary <- do.call(rbind,lapply(file_names,read.csv))
setwd("./nflscrapeR/GameSummary")
write.csv(weeklysummary, file = paste("week", k, "summaries_2018.csv", sep = ""), row.names = FALSE)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...