2016-11-08 11 views
0

私はデータセットと3つの関数を持っています。最初の関数subject(x、n)には、オブジェクトxと値nという2つの引数があります。 subject()はxをdata.frameクラスに変換し、配管演算子%>%を使用してxに対してdplyr関数を適用します。 次に、subject(x、n)によって返されたオブジェクトは、配管演算子%>%でsubject(x、n)にリンクされた関数visit(x、n)を送ります。 visit(x、n)関数は、受け取ったオブジェクトのクラスをdata.frameに変換し、dplyrのfilter()関数をデータフレームに適用し、それを「訪問」クラスに変換した後の結果のデータフレームを返します。最後に、3番目の関数ルーム(x、r)はpipe演算子%>%とvisit(x、n)でリンクされ、クラスをdataframeに変更してオブジェクトを返すと、受信したオブジェクトにfilter()を適用し、 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

あなたは正しいです。それはclass = "visit" – 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") 
       } 

編集後のコードは、問題

関連する問題