使用for循环的每次迭代创建新的df
我有一个函数使用for循环的每次迭代创建新的df,r,function,for-loop,iterator,R,Function,For Loop,Iterator,我有一个函数tot_prof(number,df1,number,df2),其中输出本身就是另一个df 我正在尝试遍历df3以获取tot_prof函数的字符串值 每次迭代都应该将tot_prof的结果存储为一个新的df(或者可以合并所有结果) 我该怎么做 我尝试创建另一个函数,如下所示: iterator <- function(df, cluster, prod_dat, q_dat) { l <- list(length(df)) iter <- 1 fo
tot_prof(number,df1,number,df2)
,其中输出本身就是另一个df
我正在尝试遍历df3
以获取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)
}
iterator很抱歉没有评论(我不被允许),但这里可能有一个解决方案:
对于每个prod
,您将在上一个数据帧上保存一个新的数据帧。解决方案是按列(cbind()
)或行(rbind()
)组合所有prod
数据帧。最后将其保存到列表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)
}
iterator如果你把l
放在末尾怎么办。您似乎真的没有返回任何内容。@Elin请查看我的编辑-您是对的,我修复了它,但它仍然不能正常工作。为什么要将其作为数据帧?从查看它是否作为列表正确返回开始。然后将列表制作成一个数据框。@Elin我取出作为.data.frame()
并进行检查-虽然列表是相同的,但对1个产品的61个观察结果:我正在尝试迭代df3。。。按行、按列进行迭代?请发布数据和函数的代码,以便整个脚本可以从空的R环境(即a)中运行。