Я борюсь за написание функций для своего класса. Хэдли Уикхем предлагает реализовать функции для квадратных скобок, такие как [
, [<-
и т. Д. Но как это сделать?
После комментария от r.user.05apr мне удается написать
`[.test` <- function(x, y){
substr(x, start = y[1], stop = y[length(y)])
}
foo <- "hello world"
class(foo) <- "test"
foo[2:5] #what correctly returns "ello"
Я нашел сайтов о том, как они называются , но нет объяснений и примеров того, как они определены. Например, для упомянутой функции [<-
я предполагаю, что необходимы три аргумента: объект, которым нужно манипулировать, индекс, показывающий, какие элементы объектов должны быть заменены, и, наконец, замена. Мне удалось получить желаемый результат к
`[<-.test` <- function(obj, index, value){
tmp <- unlist(strsplit(obj, ""))
tmp[index] <- value
return(paste(tmp, collapse = ""))
}
foo <- "hello world"
class(foo) <- "test"
foo[c(2, 5)] <- "X"
но только после выяснения, что третий элемент должен называться value
и больше ничего. Поэтому я ищу хороший, легкий для понимания (этот критерий не соответствует Написание R-расширений ; больше похоже на Создание R-пакетов Фридрихом Лейшем ) литературным материалом, посвященным методам упомянутый Уикхемом.