<-c(1, 2, 3, 4, 5) #numeric
number<-c("x", "y", "z", "w", "j") #character
letter<- c(TRUE, FALSE, FALSE, TRUE, FALSE) #logical
logico<-1:10
seq<-4i complexo
3 Vetores
Função de concatenação c()
:
A função class()
pode ser usada para acessar a classe de um determinado objeto:
class(number)
class(letter)
class(logico)
class(seq)
class(complexo)
A função vector()
cria vetores com valores padrões de uma determinada classe:
<-vector(mode = "integer", length = 10)
a<-vector("logical", 10)
b<-numeric(10)
c<-character(10)
d<-complex(10)
e
<-1 #numeros sao salvos como numeric
x<-1L #para explicitar integer, usa-se L x
<- c("b", "c", "d", "f", "g")
alfa alfa
<- c(2L, 3L, 5L, 7L, 11L)
primos primos
3.1 Hierarquia de classes
Vetores comportam apenas uma classe de elementos. Quando um vetor é criado com valores pertecentes a classes distintas, é feita uma conversão implícita. Um valor logical
é convertido para numeric
, e um valor numeric
é convertido para character
:
class(c(1, 2, 3))
class(c("1", "2", "3"))
class(c(TRUE, FALSE, FALSE))
class(c("TRUE", "FALSE", "FALSE"))
class(c(1, "a", TRUE))
class(c(1, "a"))
class(c(1, T))
class(c("a", T))
Com esta hierarquia, é possível somar valores lógicos, sendo TRUE
equivalente a 11, e FALSE
equivalente a 0:
<- c(TRUE, FALSE, FALSE, TRUE, FALSE)
logicalsum(logico)
Uma conversão explícita pode ser feita com as funções as.<nome da classe>
:
<-0:10
x
xclass(x)
<-as.numeric(x)
a
aclass(a)
<-as.character(x)
b
bclass(b)
<-as.logical(x)
c
cclass(c)
identical(x, a)
as.numeric(a)
as.numeric(b)
as.numeric(c)
<- c("a", "b", "c", "d")
char_vec as.numeric(char_vec) # Retornará NA pois não há conversão direta
3.2 Valores não disponíveis ou impossíveis
Valores não disponíveis são representados por NA
(Not Available), e valores impossíveis, como o resultado de uma divisão por 0, são representados por NaN
(Not a Number).
<-c(1, 2, 3, NA)
x<-c("a", "b", "c", NA)
yis.na(x)
<-rep(NA, 10)
w
wclass(w)
<-rep(NA_integer_, 10)
z
zclass(z)
<- c(1, 3, NA, 7, 9)
a sum(a)
sum(a, na.rm=TRUE)
3.3 Atributos de objetos
Todos os objetos possuem atributos:
<-1:5
x
xlength(x)
dim(x)
attributes(x)
names(x)<-c("a", "b", "c", "d", "e")
xattributes(x)
3.4 Fator
Um vetor da classe factor
é um vetor categórico que possui o atributo levels
:
<-factor(c("s", "n", "n", "s", "s"))
x<-factor(c("alto", "baixo", "medio"))
z
x z
3.5 Trabalhando com vetores
No R as operações são vetorizadas:
<-1:5
x
x<-6:10
y y
Soma dos valores de ambos os vetores
+y x
Podemos multiplicar um vetor por um número:
*2
x^2
x<-c(x,y)
z
z+x
z<-1:3
w+x
w<-c(T, T, F, T, F, F)
l/2 l
Usamos []
para acessar elementos de vetores:
<-c("x", "y", "z", "w", "j")
letter# acessa o segundo elemento do vetor
2]
letter[# podemos usar sequências de valores
2:4]
letter[# usamos a função c() para valores não contíguos
c(1, 4)]
letter[# usamos números negativos para excluir um ou mais valores
-2]
letter[c(-2, -5)]
letter[# podemos criar índices numéricos
<-c(1, 4)
idx
letter[idx]<-1:10
x# podemos usar operadores relacionais como filtros
>7]
x[x# também funciona com caracteres, levando em consideração a ordem lexicográfica
>"k"]
letter[letter<"k"]
letter[letter=="z" letter
<- 1:10
vec 8] <- vec[1]
vec[ vec
Funções para identificar valores extremos:
# definindo uma semente para a geração de valores aleatórios
set.seed(1)
<-sample(-1000:1000, 200)
s# procura a posição do maior valor
which.max(s)
# exibe o maior valor
max(s)
# exibe o menor valor
min(s)
# exibe o intervalo dos valores do vetor
range(s)
# cria um vetor lógico
>0
s# cria um vetor com as posições que satisfazem o comando
which(s>0)
sum(s > 0)
<- s[s > 0]
positivos positivos
Funções de ordenamento:
<-c(3, 8, 2, 1, 5, 9, 7, 7, 3)
x
x# ordena um vetor
sort(x)
sort(x, decreasing = T)
# informa a ordem na qual cada elemento deve ser acessado para exibir o conteúdo do vetor em ordem crescente
order(x)
# exibe o conteúdo do vetor de forma aleatória, e uma única vez, cada posição
sample(x)
# elimina as replicatas
unique(x)
# exibe um vetor lógico referente à posição das replicatas
duplicated(x)
sum(duplicated(x))
3.6 Strings
Conceitualmente, uma string
é um vetor de caracteres2. Certas operações são recorrentes na manipulação de strings, como a inserção de conteúdo numa dada posição, substituição do conteúdo de uma porção do vetor, ou a busca de um determinado padrão:
<-20:30
x<-1:4
y# adiciona valores num vetor numa posição específica
append(x, y, after = 3)
# concatena dois vetores, converte em character
<-paste("dt", 1:10, sep = "")
x x
Identificando expressões regulares (regex) numa string:
<- c("16_24cat", "25_34cat", "35_44catch", "45_54Cat", "55_104fat")
x # identifica regex por posição
grep("cat", x)
# o argumento value = T retorna os valores
grep("cat", x, value = T)
# $ é um metacaractere que identifica o término da string
grep("cat$", x, ignore.case = T)
# a função grepl() retorna um vetor lógico
grepl("cat$", x, ignore.case = T)
3.7 Expressões regulares
Metacaractere | Funcionalidade |
---|---|
* | 0 ou mais vezes |
+ | uma ou mais vezes |
? | 0 ou 1 vez |
{n} | exatamente n vezes |
{n,} | pelo menos n vezes |
{n,m} | entre n e m vezes |
^ | início da string |
$ | final da string |
<- c("a", "ab", "acb", "accb", "acccb", "accccb")
strings grep("acb", strings)
grep("ac*b", strings)
grep("ac+b", strings)
grep("ac?b", strings)
grep("ac{2}b", strings)
grep("ac{2,}b", strings)
grep("ac{2,3}b", strings)
3.8 Desafio
Os desafios a seguir foram criados para ajudá-lo a desenvolver suas habilidades de forma independente.
Evite o uso de Inteligência Artificial e tente resolver os problemas por conta própria.
Aprender com a prática fortalecerá seu raciocínio e aprofundará seu conhecimento! 🚀
- Considere os seguintes elementos: 1, 4, 5, “a”, 10L e TRUE
Crie um vetor com os elementos acima.
Verifique a classe do vetor criado. Se houve coerção implícita, explique.
- Considere as operações vetorizadas:
# a)
c(1, 3, 5) + c(2, 4, 6)
# b)
c(1, 3, 5) + c(2, 4, 6, 8)
Explique o que ocorre em cada uma das operações acima.
- Considere o seguinte vetor:
<- c(-1, 45, -6, 88, 30, 4) x
Obtenha um outro vetor a partir deste que contenha apenas os elementos da posição 2 e da última posição.
Obtenha um outro vetor a partir de x que contenha todos os elementos, exceto o 3º elemento.
Atribua um nome para cada um dos elementos do vetor x.
Obtenha a posição do valor máximo contido no vetor x.
Obtenha um outro vetor a partir de x com todos os valores positivos.