R Объектно-ориентированное программирование Оператор трубопровода RC не работает - PullRequest
0 голосов
/ 21 ноября 2018

У меня есть следующие классы, методы и функции:

library(data.table)
#df <- fread(file.choose())


subject <- setRefClass("subject",
                       fields = list(id = "integer", Name = "character"),
                       methods = list()  
)


visit <- setRefClass("visit",
                     fields = list(visit_no = "integer", Address = 'character'),
                     methods = list())



room <- setRefClass("room",
                    fields = list(room = "character", size = 'numeric'),
                    methods = list()
                    )



LongitudinalData <- setRefClass("longitudinalData",
                                contains = c('subject','visit','room'),
                                fields = list(
                                              value = "numeric", 
                                              timepoint = "integer"),
                                methods = list(
                                              subject <- function(x, p){return(x$value[which(x$id==p)])},
                                              visit <- function(x, p){return(x$value[which(x$visit_no==p)])},
                                              room <- function(x, p){return(x$value[which(x$room==p)])}
                                              )
                                )

make_LD = function(df)
  {
  LongitudinalData$new(
     id = df$id, 
     visit_no = df$visit, 
     room = df$room, 
     value = df$value, 
     timepoint = df$timepoint)
  }

Затем, когда я пытаюсь выполнить следующую команду:

out <- subject.LongtitudinalData(x, 44) %>% visit.LongtitudinalData(0) %>% room.LongtitudinalData("bedroom")

Я получаю следующую ошибку:

Ошибка: оператор $ недопустим для атомных векторов

Данные:

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...