2017-11-18 2 views
0

나는 tot_prof(number, df1, number, df2) 함수를 가지고 있는데 출력은 그 자체가 다른 df입니다.for 루프의 각 반복마다 새 df를 만듭니다.

tot_prof 함수에 대해 string 값을 얻으려면 df3을 반복 실행하려고합니다.

각 반복마다 tot_prof의 결과를 새 df로 저장해야합니다 (또는 모든 결과를 결합 할 수 있음).

어떻게하면됩니까?

나는과 같이 다른 기능을 만들려고 : 그것은 10 개 가지 prod 값 (310 개) 관찰을 반환해야

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) 
} 

- 대신 같은 prod 61 개 관찰을 반환합니다.

나는 매우 혼란 스럽다. 도와주세요. (I 허용하고 있지 않다) 그러나 논평하지 않는

+0

끝에 'l'을 붙이면 어떨까요? 당신은 정말로 아무것도 돌려 보내지 않는 것 같습니다. – Elin

+0

@Elin 제 편집 내용을 참조하십시오. 당신이 옳았다 고 생각했지만, 여전히 제대로 작동하지 않습니다. – zsad512

+0

왜 데이터 프레임으로 만들었습니까? 목록으로 올바르게 반환되는지 확인하십시오. 그런 다음 목록을 데이터 프레임으로 만들기 위해 작업하십시오. – Elin

답변

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) 
    } 
관련 문제