Eu tenho um conjunto de dados e três funções. A primeira função subject (x, n) possui dois argumentos: um objeto xe um valor n. subject () converte x em uma classe data.frame e aplica as funções dplyr em x usando o operador de tubulação%>%. Então, o objeto retornado pelo sujeito (x, n) alimenta a função visit (x, n) que está vinculada ao assunto (x, n) com o operador de tubulação%>%. A função visit (x, n) converte a classe do objeto que recebe para um data.frame, em seguida, aplica a função filter () de dplyr no dataframe e retorna o dataframe resultante após convertê-lo em uma classe "visit". Por último, uma terceira sala de função (x, r) é vinculada ao operador de pipe%>% com visit (x, n), aplica um filtro () no objeto recebido, depois de mudar sua classe para dataframe e retorna um objeto de class "room" As funções "visit" e "room" não funcionam como planejadas. Gostaria de saber se você poderia me ajudar a entender o erro e suas causas e sugerir maneiras de corrigir o código. Obrigado.
> 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
Respostas:
0 para resposta № 1O código deve ser alterado da seguinte forma:
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")
}
Após as edições, o código funcionou sem problemas