Skip to content

Instantly share code, notes, and snippets.

@aleDsz
Last active June 5, 2018 07:48
Show Gist options
  • Save aleDsz/d44bfb2cd7d6107e9296f4e6fa1e0d03 to your computer and use it in GitHub Desktop.
Save aleDsz/d44bfb2cd7d6107e9296f4e6fa1e0d03 to your computer and use it in GitHub Desktop.
Generics em R - Exemplo 2
library ("methods")
# Classe
setRefClass("contacts",
fields = list (
id = "numeric",
first_name = "character",
last_name = "character",
age = "numeric",
email = "character"
)
)
# Criação da instância da classe `contacts`
Contacts <- new("contacts")
# Leitura da classe
class <- Contacts$getClass()
# Leitura dos campos da classe
class_fields <- class@fieldClasses
# Extração dos nomes das propriedades
field_names <- names(class_fields)
# Acessando uma propriedade da classe de forma dinâmica
Contacts[["id"]] <- 0
Contacts[["email"]] <- "alexandre@aledsz.com.br"
# Preenchendo dados de um data.frame em uma classe (e vice-versa, se quiser)
dados <- data.frame (
id = 0,
first_name = "Alexandre",
last_name = "de Souza",
age = 22,
email = "alexandre@aledsz.com.br"
)
for (field in field_names) {
Contacts[[field]] <- dados[1, field]
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment