Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/83.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/symfony/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用for循环的每次迭代创建新的df_R_Function_For Loop_Iterator - Fatal编程技术网

使用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)中运行。