2011-10-19 11 views
6

¿Existen restricciones en los nombres de las clases S3? Por ejemplo, ¿se permiten espacios en el nombre? Veo que los marcos de datos tienen una clase de "data.frame" y no de "data frame". Si no hay una restricción formal, ¿hay problemas potenciales con espacios en el nombre? Simplemente no me encuentro con nada más que los modos básicos, así que estoy seguro de que aquellos de ustedes con más experiencia sabrán. Se permiteNombres de clases S3: ¿Qué se permite?

Respuesta

6

No parece que haya muchas restricciones. Echa un vistazo a esta monstruosidad:

`plot.44 [email protected]#$%^&` <- function(x) { 
    plot(rnorm(x), pch=16, col="red", 
      main = "But why would you want to do this??") 
} 

dat <- 55 
class(dat) <- "44 [email protected]#$%^&" 
plot(dat) 

Una de las razones no poner espacios en un nombre de clase es que hace que sea un poco más complicado para llamar directamente métodos de dicha categoría.

plot.44 [email protected]#$%^&(100) # This doesn't work 

`plot.44 [email protected]#$%^&`(100) # You have to do this instead 
+0

Simplemente adivinando, pero entre otras cosas, supongo que la monstruosidad puede no ser tan portátil dependiendo de la codificación (además de ser una monstruosidad). –

+0

Podría imaginar que sea un problema con algunos personajes. Sin embargo, probablemente no sean los que incluí allí, ya que (me acabo de dar cuenta) que todos se usan de una forma u otra en la base R! –

+2

Una clase de "π" funciona para mí – hadley

2

Espacios:

test = 1 
class(test) = c(class(test) , "My Class") 

No estoy seguro sobre otras restricciones o consecuencias de tener caracteres especiales en los nombres de las clases. Ciertamente, tener espacios/caracteres especiales en los nombres de las clases no es convencional (no solo R, sino otros idiomas). Sugiero evitar eso.

Cuestiones relacionadas