【发布时间】:2018-11-20 21:46:00
【问题描述】:
简而言之,我有一个更大的函数,它创建的 data.frames 是一个更大的 data.frame 的子集,并以函数的参数命名。它正在为原始数据以及 Holt-Winters 的输出和预测输出构建 data.frames……这意味着它正在创建多个 data.frames。一个小例子如下(虽然这里没有足够的时间间隔来实际生成一个 ts 类 data.frame):
Group <- c("Primary_Group","Primary_Group","Primary_Group","Primary_Group","Primary_Group","Primary_Group","Secondary_Group","Secondary_Group","Secondary_Group","Secondary_Group","Secondary_Group","Secondary_Group","Tertiary_Group","Tertiary_Group","Tertiary_Group","Tertiary_Group","Tertiary_Group","Tertiary_Group")
Day <- c(1,2,3,1,2,3,1,2,3,1,2,3,1,2,3,1,2,3)
Type <- c("A","A","A","B","B","B","A","A","A","B","B","B","A","A","A","B","B","B")
Value <- c(7,3,10,3,9,4,0,9,3,10,1,6,3,4,10,2,3,1)
df <- as.data.frame(cbind(Group,Day,Type,Value))
Fun <- function(Group,Type, A, B, G){
df <- Data[Data$Group== Group & Data$Type== Type, ]
assign(paste(Group,Type,"_df",sep = ''), df, envir = parent.frame())
df_holtwinters <- HoltWinters(ts(Data[Data$Group== Group & Data$Type== Type, ],
frequency = 365), alpha = A, beta = B, gamma = G)
assign(paste(Group,Type,"_hw",sep = ''), df_holtwinters, envir = parent.frame())
}
您会注意到 Group 和 Type 是字符,而 A、B、G 是数字或 NULL。
如果我现在有一个由列表值组成的 data.frame,我怎样才能最好地循环上述函数(可能使用 mapply)以使用第一行中每一列的值......然后是第 2 行中的每一列等 - 创建几个数据框。
argGroup <- c("Primary_Group","Primary_Group","Secondary_Group","Secondary_Group","Tertiary_Group","Tertiary_Group")
argType <- c("A","B","A","B","A","B")
argA <- c(NA, NA, NA, NA, NA, NA)
argB <- c(0.05, 0.05, NA, NA, NA, NULL)
argG <- c(NA, NA, NA, NA, NA, NA)
argGroup[is.na(argGroup)] <- list(NULL)
argType[is.na(argType)] <- list(NULL)
argA[is.na(argA)] <- list(NULL)
argB[is.na(argB)] <- list(NULL)
argG[is.na(argG)] <- list(NULL)
Arguments <- cbind(argType, argType, argA, argB, argG)
理想情况下,我会生成以下 data.frames...
Primary_Group_A_df
Primary_Group_A_hw
Primary_Group_B_df
Primary_Group_B_hw
Secondary_Group_A_df
Secondary_Group_A_hw
Secondary_Group_B_df
Secondary_Group_B_hw
Tertiary_Group_A_df
Tertiary_Group_A_hw
Tertiary_Group_B_df
Tertiary_Group_B_hw
了解如何最好地(最自动化的方式)rbind 将所有 _df 和所有 _hw 放在一起也会很有帮助。
任何帮助都将是惊人的,非常感谢。非常感谢!
【问题讨论】:
-
Parfait,将列表设置为 NULL 的原因是为了让我可以拥有一个 data.frame,其中的列表包含两个数值(比如 0.05)但也有 NULL(不是 NA)作为值.简而言之,Holt-Winters 为您提供了写入 alpha = 0.05(数值)或 alpha = NULL 的选项,其中 alpha 刚刚优化。我可以将此线程简化为一个更简单的问题:如何使用 mapply 将多列 data.frame 应用于函数,以便它循环遍历每一行的参数(意味着第 1 行中的每一列都是迭代一的参数。 ..然后第二行...等)?
标签: r