2012-07-09 3 views
1

다음은 샘플 데이터 및 문제가있는 기능 중 일부입니다.r에있는 목록 구성 요소 내에서 루프를 적용하고 r에 바인딩 목록 구성 요소를 적용하십시오.

# data 
Gr1 <- data.frame (group = rep(1:2, each = 2001), 
position = round (c(0, cumsum (rnorm (2000, 0.05, 0.08)), 0, 
cumsum (rnorm (2000, 0.05, 0.08))))) 

Gr2 <- data.frame (group = rep(1:2, each = 2001), 
position = round (c(0, cumsum (rnorm (2000, 0.05, 0.08)), 0, 
    cumsum (rnorm (2000, 0.04, 0.08))))) 

Gr3 <- data.frame (group = rep(1:2, each = 2001), 
position = round (c(0, cumsum (rnorm (2000, 0.05, 0.08)), 0, 
cumsum (rnorm (2000, 0.05, 0.08))))) 

groupobs = list(Gr1, Gr2, Gr3) 
grnames = c("A", "B", "C") 
spacing = c(0, 0.1, 0.3) 


    # for loop 

    for (i in 1:length(groupobs)){ 
    groupobs[i]$sgrp <- grnames[i] 
    groupobs[i]$y <- groupobs[i]$group + spacing[i] 
    } 

    # binding of list components 
    mydf <- data.frame (rbind (groupobs) 

어떻게하면됩니까?

편집 : 위의 루프에서 다음 수동 프로세스를 수행하고 싶습니다. n 개의 데이터 프레임을 자동화하여 긴 단계를 작성할 필요가 없도록하십시오.

여기에있는 각 데이터 프레임에는 동일한 변수 이름이 있습니다. 각 구성 요소 데이터 프레임에 대해 다음 작업을 수행해야합니다. 내가 루프없이 그것을 할 경우

# for first dataframe with in list 
Gr1$sgrp <- grnames[1] 
Gr1$y <- Gr1$group + spacing[1] 

# for second dataframe in the list 
Gr2$sgrp <- grnames[2] 
Gr2$y <- Gr1$group + spacing[2] 

# for third dataframe in the list 
Gr3$sgrp <- grnames[3] 
Gr3$y <- Gr1$group + spacing[3] 

mydf <- data.frame (rbind (Gr1, Gr2, Gr3)) 
+0

을 @ 존에 dataframe에게

덕분에 생산 변경, 나는 ENO를 expained 한 희망 내가 습득하고자하는 것을 정화시키고 이것에 대한 아래 투표를 피하라. – SHRram

+0

나는 ttmaccer와 함께있다, 그냥 내 의견에 시간을주지 않고 downvote 및 닫기 투표가 너무 가혹한 것 같다 귀하의 질문을 개선하시기 바랍니다 메모를 드롭하십시오 – jon

답변

3

나는 어쩌면 방법이 떨어져 여기하지만

mydf<-mapply(function(a,b,c){a$sgrp<-b;a$y<-c;a},groupobs,grnames,spacing,SIMPLIFY = F) 
mydf<-do.call("rbind",mydf) 
> str(mydf) 
'data.frame': 12006 obs. of 4 variables: 
$ group : int 1 1 1 1 1 1 1 1 1 1 ... 
$ position: num 0 0 0 0 0 0 0 0 0 1 ... 
$ sgrp : chr "A" "A" "A" "A" ... 
$ y  : num 0 0 0 0 0 0 0 0 0 0 ... 

은 당신이 무엇을 할 수 후 .............

편집 : 잘하면 내 편집을 참조하십시오 주석에 대한 감사 @ttmaccer

+0

답변 주셔서 감사합니다, 나는 dataframes에 바인딩 된 것으로 예상했다 하나. 그러나 위의 fuction은 훌륭하게 목록의 목록을 만들었습니다. – SHRram

+2

은 n 레벨 프로세스를 자동화하기 위해 mydf <-rbind (mydf [[1]], mydf [[2]], mydf [[3]])에 대해 do.call ("rbind", mydf) – jon

관련 문제