2016-11-08 5 views
0

데이터 집합과 세 가지 함수가 있습니다. 첫 번째 함수 subject (x, n)에는 두 개의 인수가 있습니다. 객체 x와 값 n입니다. subject()는 x를 data.frame 클래스로 변환 한 다음 배관 연산자 %> %를 사용하여 x에 dplyr 함수를 적용합니다. 그러면 subject (x, n)가 반환 한 객체는 piping 연산자 %> %를 사용하여 subject (x, n)에 연결된 함수 visit (x, n)을 제공합니다. 방문 (x, n) 함수는 수신 한 객체의 클래스를 data.frame으로 변환 한 다음 dframe의 filter() 함수를 데이터 프레임에 적용하고 결과 클래스를 방문 클래스로 변환 한 후 결과 데이터 프레임을 반환합니다. 마지막으로, 세 번째 함수실 (x, r)은 pipe 연산자 %> %와 visit (x, n)을 사용하여 링크되고, 클래스를 데이터 프레임으로 변경 한 후받은 객체에 필터()를 적용하고 class "room" "visit"및 "room"함수는 설계된대로 작동하지 않습니다. 오류 및 그 원인을 이해하고 코드를 수정하는 방법을 제안 할 수 있는지 궁금합니다. 고맙습니다. 다음과 같이함수 내에서 Dplyr 명령

 > y 
      id visit room value timepoint 
      1 14  0 bedroom 6.00  53 
      2 15  0  den 6.00  54 
      3 14  1  den 2.75  55 
      4 14  0 bedroom 2.75  56 
      5 17  1  den 2.75  57 
      6 15  1 bedroom 2.75  58 
      7 16  2  den 6.00  59 
      8 16  2  den 6.00  60 
      9 14  2  den 2.75  61 
     10 12  0  den 2.75  62 


     subject <- function(x, n){ 
        class(x) <- "data.frame" 
        y <- x %>% select(id, visit, room, value) %>% filter(id == n) 
        structure(y, class = c("subject")) 
        } 

      visit <- function(x, n){ 
         class(x) <- "data.frame" 
         x %>% filter(visit == n) 
         structure(x, class = "visit") 
        } 

      room <- function(x, r){ 
         class(x) <- "data.frame" 
         x %>% filter(room == r) 
         structure(x, class = "room") 
        } 

     w <- subject(y, 14) %>% visit(0) %>% room("bedroom") 

     class(w) <- "data.frame" 

     w 

      id visit room value 
     1 14  0 bedroom 6.00 
     2 14  1  den 2.75 
     3 14  0 bedroom 2.75 
     4 14  2  den 2.75 
+0

가'역 추적()를 사용할 필요가 문제없이 일'알아낼의이 순서의 어떤 호출이'match '를 잘못 호출하고 있습니다. 'dput (y)'를 게시 할 수 있다면 이상적입니다. –

+1

'class = visit' 또는'class = "visit"'? – HubertL

+0

당신 말이 맞아요. 클래스 = "방문" – gk7

답변

0

코드를 변경해야합니다

 visit <- function(x, n){ 
        class(x) <- "data.frame" 
        y <- x %>% filter(visit == n) 
        structure(y, class = "visit") 
       } 

     room <- function(x, r){ 
        class(x) <- "data.frame" 
        y <- x %>% filter(room == r) 
        structure(y, class = "room") 
       } 

가 편집 후 코드가