我正在尝试将 dplyr 中的一些较慢的进程移动到使用 data.table,但是似乎无法找到一种在 data.table 中使用“mutate_at”类型方法的有效方法。特别是,在命名创建的新变量并将超过 1 个函数应用于多个列时。
下面我使用 mutate_at 将 2 个不同的函数应用到 2 个具有关联命名的不同列 + 使用 group by 语句。我希望能够在 data.table 中轻松复制它。
library(tibble)
library(zoo)
Data = tibble(A = rep(c(1,2),50),
B = 1:100,
C = 101:200)
Data %>%
group_by(A) %>%
mutate_at(vars(B,C), funs(Roll.Mean.Week = 7 * rollapply(., width = 7, mean, align = "right", fill = 0, na.rm = T, partial = T),
Roll.Mean.Two.Week = 7 * rollapply(., width = 14, mean, align = "right", fill = 0, na.rm = T, partial …Run Code Online (Sandbox Code Playgroud) 我运行了各种模型(glm、rpart、earth 等)并将模型对象从每个模型对象导出到我计算机上的一个文件夹中。所以我现在有一个文件夹,其中包含大约 60 个不同的模型,这些模型存储为单独的 .rda 文件。
这是通过创建一个模型函数然后通过 purrr 映射包将其应用于模型类型列表来完成的(以避免错误和终止)。
我现在想将它们加载回 r 并进行比较。不幸的是,当我编写初始模型脚本时,每个模型都存储为相同的即“Model.Object”(我不知道否则该怎么做),因此当我尝试将每个模型单独加载到 r 时,它只是相互覆盖。每个文件都保存为 glm.rda、rpart.rda、earth.rda 等,但其中的模型被标记为 Model.Object(为了澄清)。
所以我想我有几个问题;1. 可以将多个 .rda 文件加载到 r 到一个列表中,然后可以将其编入索引 2. 如何更改已应用的模型函数,以便“model.object”名称读取为模型类型(例如glm、rpart 等)
代码:
Model.Function = function(Model.Type){
set.seed(0)
Model.Output = train(x = Pred.Vars.RVC.Data, y = RVC, trControl = Tcontrolparam,
preProcess = Preprocessing.Options, tuneLength = 1, metric = "RMSE",
method = Model.Type)
save(Model.Object, file = paste("./RVC Models/",Model.Type,".rda", sep = ""))
return(Model.Object)
}
Possibly.Model.Function = possibly(Model.Function, otherwise = "something wrong here")
result.possible = map(c("glm","rpart","earth"), Possibly.Model.Function)
Run Code Online (Sandbox Code Playgroud) if (!require("pacman")) install.packages("pacman")
pacman::p_load(tidyverse, lubridate)
# Example of sample dates - these are to be used to cross check if date exists within the range
Sample.Dates = tibble(
ID = "ID",
Round = 1:3,
Start.Date = dmy(c("03/12/2018","10/12/2018","17/12/2018")),
End.Date = dmy(c("09/12/2018","16/12/2018","23/12/2018")))
# Reference dates for a particular player - "John". Need to cross check the date against Sample.Dates and attach round, start and end date columns
Ref.Dates = tibble(
ID= "ID",
Date = seq.Date(ymd("2018-12-05"), ymd("2018-12-31") , by = "day"),
Player = …Run Code Online (Sandbox Code Playgroud)