Aula 03 - Objetos em R
John Chambers (Criador da linguagem S) afirma:
Princípio do Objeto: Tudo que existe em
R
é um objeto
R
com características internas contendo informações necessárias para interpretar sua estrutura e conteúdo
> x <- 10
<-
, isto é, <
+ -
=
, use apenas para definir argumentos em uma funçãoDeve consistir em letras, dígitos, .
e _
;
Os nomes devem ser iniciado por uma letra ou um ponto não seguido de um número, Ex.: .123
;
Letras maiúsculas e minúsculas são diferentes;
Não pode inicia por _
ou dígito;
Não pode usar palavras reservadas: ?Reserved()
.
# Nome nao sintatico
.123 <- 50
## Error in 0.123 <- 50 : lado esquerdo da atribuicao inválida (do_set)
# Qual a sugestao de nome sintatico para '.123'?
make.names(.123)
[1] "X0.123"
> x <- 10 # Ou 10 -> x
> lobstr::obj_addr(x)
> # [1] "0xf8a104fc20"
> y <- x
> lobstr::obj_addr(y)
> # [1] "0xf8a104fc20"
> lobstr::obj_addr(x)
> # [1] "0xf8a104fc20"
> x <- 30
> lobstr::obj_addr(x)
> # [1] "0x42db6dbb50"
mode()
baseado na linguagem S
etypeof()
baseado na linguagem C
length()
attributes()
class()
e sloop::s3_class()
e atributo classe por attributes()
> # Objeto modo caractere
> x <- "Ben"; mode(x)
## [1] "character"
> # Objeto modo logico
> z <- TRUE; mode(z)
## [1] "logical"
> # Objeto modo complexo
> w <- 1i; mode(w)
## [1] "complex"
> # Objeto modo numerico
> y <- 10L; mode(y); y2 <- 10; mode(y2)
## [1] "numeric"
## [1] "numeric"
> # y eh igual a y2? # y eh identico y2?
> y == y2; identical(y, y2)
## [1] TRUE
## [1] FALSE
> # Objeto modo caractere
> x <- "Ben"; typeof(x)
## [1] "character"
> # Objeto modo logico
> z <- TRUE; typeof(z)
## [1] "logical"
> # Objeto modo complexo
> w <- 1i; typeof(w)
## [1] "complex"
> # Objeto modo numerico
> y <- 10L; typeof(y); y2 <- 10; typeof(y2)
## [1] "integer"
## [1] "double"
> # y eh igual a y2? # y eh identico y2?
> y == y2; identical(y, y2)
## [1] TRUE
## [1] FALSE
typeof |
mode |
---|---|
logical |
logical |
integer |
numeric |
double |
numeric |
complex |
complex |
character |
character |
raw |
raw |
> # Vetor de comprimento 5
> v1 <- 1:5
> # Vetor de comprimento 3
> v2 <- c("Ben", "Maria", "Lana")
> # Vetor de comprimento quatro
> v3 <- c(TRUE, FALSE, TRUE, TRUE)
> # Vejamos o comprimento dos vetores
> length(v1); length(v2); length(v3)
## [1] 5
## [1] 3
## [1] 4
Um resumo as funções mensionadas podem ser refletidas com as seguintes indagações:
base::class()
e loop::c3_class()
: Qual o tipo de objeto?base::mode()
: Qual o tipo de dados baseados na linguagem S
?base::typeof()
: Qual o tipo de dados baseados na linguagem C
?base::attributes()
: O objeto tem atributos?base::length()
: Qual o comprimento do objeto?Sintaxe: pacote::nome_função()
numeric
logical
character
list
matrix
array
factor
data.frame
> # Criando um objeto x e imprimindo o seu resultado
> x <- c("Nome", 3, 4, 5);x
## [1] "Nome" "3" "4" "5"
> # Objeto de modo numerico
> minha_idade <- 35; mode(minha_idade)
## [1] "numeric"
> # Coersão do objeto para modo caractere (`string`)
> minha_idade <- as.character(minha_idade)
> mode(minha_idade)
## [1] "character"
> # Verificando se o objeto tem modo 'character'
> is.character(minha_idade)
## [1] TRUE
Vetores atômicos:
Vetores em listas:
Existem outros, mas para esse módulo, exploraremos estes nas seções seguintes