我有一个函数tot_prof(number, df1, number, df2)
,其中输出本身是另一个df。
我正在尝试遍历df3
以获取string
函数的tot_prof
值。
每次迭代都应将tot_prof
的结果存储为新的df(或者所有结果都可以合并)。
我该怎么做?
我试图像这样创建另一个函数:
iterator <- function(df, cluster, prod_dat, q_dat) {
l <- list(length(df))
iter <- 1
for (i in l){
thisl <- i
for (n in 1:nrow(df)) {
prod <- n
iter_out <- tot_prof(cluster, prod_dat, prod, q_dat)
l[[iter]] <- data.frame(iter_out)
}
iter <- iter + 1
}
l <- as.data.frame(l)
return(l)
}
它应该为10个不同的prod
值返回310个观察值 - 相反,它会返回相同prod
的61个观测值。
我很困惑。请帮忙。
答案 0 :(得分:1)
很抱歉没有发表评论(我不被允许),但也许是一个解决方案:
对于每个prod
,您要在最后一个上保存新数据框。解决方案是按列(prod
)或行(cbind()
)组合所有rbind()
数据框。最后将其保存到列表l
。
iterator <- function(df, cluster, prod_dat, q_dat) {
l <- list(length(df))
for (i in l){
iter <- i
for (n in 1:nrow(df)) {
prod <- n
df <- tot_prof(cluster, prod_dat, prod, q_dat)
if(prod == 1) {
iter_out <- df
}else {
iter_out <- cbind(iter_out, df) # or rbind depending what you want
}
}
l[[iter]] <- iter_out
iter <- iter + 1
}
return(l)
}