Я очень новичок в объектно-ориентированном R-кодировании.Данные имеют пять столбцов: идентификатор, посещение, комната, значение и время.Значение - это, в основном, показания датчика для различных типов комнат, таких как «Спальня», «Столовая» и т. Д. Значение посещения может быть 0, 1 или 2.
Мой код R выдает ошибку: Ошибка в UseMethod («посещение»): нет применимого метода для «посещения», примененного к объекту класса «субъект»
Код, который выдает эту ошибку:
out <- subject (x, 44)%>% visit (0)%>% room ("спальня")
# Create Summary method
print.Summary <- function(x) {
cat("ID:", x[[1]], "\n")
print(x[[2]])
invisible(x)
}
# create custom method to print specific output on LongitudinalData when needed
print.LongitudinalData <- function(x) {
cat("Longitudinal dataset with", length(x[["id"]]), "subject")
invisible(x)
}
#create custom method to print
subject.LongitudinalData <- function(x, id) {
index <- which(x[["id"]] == id)
if (length(index) == 0)
return(NULL)
structure(list(id = id, data = x[["data"]][[index]]), class = "subject")
}
print(dataset)
# Custom method to create generic subject function
subject <- function(x, id) UseMethod("subject")
print.subject <- function(x) {
cat("subject ID:", x[["id"]])
}
# test generic function
out <- subject(dataset, 10)
print(out)
out <- subject(dataset, 14)
print(out)
# Create Subject Methods
summary.Subject <- function(x){
summaryout <- x[["data"]] %>%
group_by(visit, room) %>%
summarise(value = mean(value)) %>%
spread(room, value) %>%
as.data.frame
structure(list(id = x[['id']],
summaryout = summaryout), class = 'Summary')
}
# Test subject summary method
out <- subject(dataset, 54) %>% summary
print(out)
visit.Subject <- function(subject, visit_num) {
if (!visit_num %in% 0:2)
stop("The number for visit must be 0, 1, or 2")
data <- subject[["data"]] %>%
filter(visit == visit_num) %>%
select(-visit)
structure(list(id = subject[["id"]],
visit_num = visit_num,
data = data), class = "visit")
}
# Custom method to create generic visit function
visit <- function(subject, visit_numb) UseMethod("visit")
room.Visit <- function(visit, room_name) {
if (!room_name %in% visit[["data"]][["room"]])
stop("You must use a valid room name from the specified visit")
data <- visit[["data"]] %>%
filter(room == room_name) %>%
select(-room)
structure(list(id = visit[["id"]],
visit_num = visit[["visit_num"]],
room = room_name,
data = data), class = "Room")
}
# Create room methods
print.Room <- function(x) {
cat("ID:", x[["id"]], "\n")
cat("Visit:", x[["visit_num"]], "\n")
cat("Room:", x[["room"]])
invisible(x)
}
summary.Room <- function(x) {
output <- summary(x[["data"]][["value"]])
structure(list(id = object[["id"]],
output = output), class = "Summary")
}
Я проверил класс по предмету (x, 44).Он относится к классу "Предмет".
Пожалуйста, помогите.
Данные выглядят следующим образом:
Ожидаемый результат для следующего кода должен быть:
out <- subject(x, 44) %>% visit(0) %>% room("bedroom")
print(out)
ID: 44
Посещение: 0
Комната: спальня