Skip to content
Back to formatted view

Raw Message

Message-ID: <1be44ffeed8e46619c57a9f8fae974b6@epfl.ch>
Date: 2019-07-07T15:49:23Z
From: Ghiggi Gionata
Subject: Possible bug in `class<-` when a class-specific '[[.' method is defined

Hi all !

I noticed a strange behaviour of the function `class<-` when a class-specific '[[.' method is defined.

Here below a reproducible example :


#-------------------------------------------------------------------.

counttt <- 0

`[[.MYCLASS` = function(x, ...) {
  counttt <<- counttt + 1
  # browser()
  x = NextMethod()
  return(x)
}

df <- as.data.frame(matrix(1:20, nrow=5))
class(df) <- c("MYCLASS","data.frame")
counttt

# The same occurs when using structure(, class=) or attr(,"class")<-
df <- as.data.frame(matrix(1:20, nrow=5))
df <- structure(df, class=c("MYCLASS","data.frame"))
attr(df, "class") <- c("MYCLASS","data.frame")

#-------------------------------------------------------------------.

Why in this example `class<-` is calling  `[[.MYCLASS` 9 times ?

Is there a way to avoid `class<-` to call `[[.MYCLASS` ?


Thank you in advance for your help and suggestions.

Gionata



	[[alternative HTML version deleted]]