Capítulo 2 R básico (continuação)
2.2 Gerando dados
Muitos comandos a seguir podem ser visto na íntegra no Cheatsheets da base R (em português).
Todas as Cheatsheets podem ser acessadas em https://posit.co/resources/cheatsheets/.
Para gerar sequências regulares usa-se o operador dois-pontos (:
):
Veja o uso da função seq()
a seguir:
seq(3, 20, 2)
#> [1] 3 5 7 9 11 13 15 17 19
Mas há outras: rep()
, sequence()
etc.
A função gl()
(Generate Factor Levels) possibilita gerar fatores (categorias ou níveis) para um objeto:
gl(n=3,k=2, labels = c("homem","mulher","outro"))
#> [1] homem homem mulher mulher outro outro
#> Levels: homem mulher outro
Para concatenar objetos usa-se a função c()
:
2.4 Criando objetos
Vetor: a função
vector()
, que tem dois argumentosmode
elength
, cria um vetor que depende do argumentomode
especificado:0
se numérico (tipodouble
),FALSE
se lógico,0+0i
se complexo, ouʺʺ
se caracter. As seguintes funções tem o mesmo efeito:numeric()
,logical()
,character()
.
Exemplos:
x=vector(mode="numeric",length = 3); x
#> [1] 0 0 0
x=vector(mode="logical",length = 3); x
#> [1] FALSE FALSE FALSE
x=vector(mode="character",length = 3); x
#> [1] "" "" ""
Fator: a função
factor()
cria fatores e níveis da variável categórica.
Exemplos:
x=c("a","b","c"); x
#> [1] "a" "b" "c"
x_fatores=factor(x,labels = c("nível 1","nível 2","nível 3")); x_fatores
#> [1] nível 1 nível 2 nível 3
#> Levels: nível 1 nível 2 nível 3
x_fatores=factor(x,labels = c("nível 1","nível 2","nível 3"),ordered = T); x_fatores
#> [1] nível 1 nível 2 nível 3
#> Levels: nível 1 < nível 2 < nível 3
levels(x_fatores)
#> [1] "nível 1" "nível 2" "nível 3"
Matriz: é um vetor com um atributo adicional (
dim
), que é um vetor de tamanho 2, que define o número de linhas e colunas da matriz. Usa-se a funçãomatrix()
.
Exemplos:
matrix(5,nrow=2,ncol=3)
#> [,1] [,2] [,3]
#> [1,] 5 5 5
#> [2,] 5 5 5
usando um script (mais fácil de visualizar a estrutura):
matrix(1:3,nrow = 2,ncol = 3,
dimnames = list(
c("l1","l2"),
c("c1","c2","c3")))
#> c1 c2 c3
#> l1 1 3 2
#> l2 2 1 3
Data frame: além da importação de dados (
read.table()
) pode ser usada a funçãodata.frame()
.
Exemplos:
x = 1:4; n = 10; M = c(10, 35); y = 2:4
data.frame(x, n)
#> x n
#> 1 1 10
#> 2 2 10
#> 3 3 10
#> 4 4 10
data.frame(x, M)
#> x M
#> 1 1 10
#> 2 2 35
#> 3 3 10
#> 4 4 35
Lista: criada de maneira similar ao
data frame
, mas agora se usa a funçãolist()
. Qualquer tipo de objeto pode ser usado numa lista.
Exemplos:
Expressão: uma série de caracteres que façam sentido para a linguagem R. Quando um comando é digitado e aceito (dar “enter”), ele é avaliado pelo R e interpretado (executado) se é válido. Pode se construir expressões sem avaliá-las, é pra isso que a função
expression()
é feita. Ela pode ser avaliada com a funçãoeval()
.
Exemplos:
x = 3; y = 2.5; z = 1
exp1 = expression(x / (y + exp(z))); exp1
#> expression(x/(y + exp(z)))
eval(exp1)
#> [1] 0.5749019
2.5 Convertendo objetos
Usa-se a função as.algumacoisa() para converter um modo
em outro. Alguns comandos: as.integer()
, as.numeric()
, as.character()
, as.logical()
etc.
2.6 Acessando o valor de um objeto: sistema de indexamento
Pode ser numérico ou lógico. Para acessar, por exemplo, o terceiro elemento de um vetor x
, usa-se x[3]
.
Exemplos:
x <- 1:5; x[3]
#> [1] 3
x[3] = 20; x
#> [1] 1 2 20 4 5
x <- matrix(1:6, 2, 3)
x[,3] = 21:22; x
#> [,1] [,2] [,3]
#> [1,] 1 3 21
#> [2,] 2 4 22
x[,3]
#> [1] 21 22
x[,3, drop = FALSE]
#> [,1]
#> [1,] 21
#> [2,] 22
O índice também pode ser usado para suprimir (excluir) linhas ou colunas. Usa-se um valor negativo:
x[, -1]
#> [,1] [,2]
#> [1,] 3 21
#> [2,] 4 22
x[, -(1:2)]
#> [1] 21 22
x[, -(1:2), drop = FALSE]
#> [,1]
#> [1,] 21
#> [2,] 22
2.7 Condições (valores lógicos)
Exemplos:
x <- 1:10
x[x >= 5] <- 20; x
#> [1] 1 2 3 4 20 20 20 20 20 20
x[x == 1] <- 25; x
#> [1] 25 2 3 4 20 20 20 20 20 20
2.8 Acessando o valor de um objeto pelo nome
Os nomes (names
) são as etiquetas dos elementos de um objeto. É geralmente um atributo opcional. Há vários tipos de nomes (names
, colnames
, rownames
, dimnames
). Os nomes de um vetor são armazenados no vetor de mesmo tamanho do objeto e podem ser acessados com a função names()
.
2.10 Estruturas de controle
2.10.1 Condicional
if (condição) expressão_verdade
else expressão_falsa
ou
if (condição) expressão_verdade
Exemplos:
if (FALSE) "isso não será mostrado"
if (T) "isso será mostrado" # abreviatura para TRUE é T
#> [1] "isso será mostrado"
if (FALSE) "isso não será mostrado" else "isso será mostrado"
#> [1] "isso será mostrado"
x = 10
if (is(x, "numeric")) x/2 else print("x não é numérico")
#> [1] 5
y = c(8, 10, 12, 3, 17)
ifelse(y>=0,sqrt(y),NA)
#> [1] 2.828427 3.162278 3.464102 1.732051 4.123106
2.10.2 Loops
2.10.2.1 Repeat
repeat {expressão}
Para parar a repetição da expressão usa-se o comando break
. Para pular para a próxima iteração no loop usa-se o comando next
.
Exemplo:
i=5
repeat {if(i>25) break else {print(i); i=i+5;}}
#> [1] 5
#> [1] 10
#> [1] 15
#> [1] 20
#> [1] 25
2.10.2.2 While
while {condição} expressão
Repete a expressão enquanto a condição de while{}
for verdadeira (TRUE). Os comandos next
e break
também podem ser usados.
Exemplo:
i = 5
while (i <= 25) {print(i); i = i + 5}
#> [1] 5
#> [1] 10
#> [1] 15
#> [1] 20
#> [1] 25
2.10.2.3 For
for {
variável
inlist
} expressão
Usa-se for{}
para iterar sobre cada elemento da lista (list
). Os comandos next
e break
também podem ser usados.
Exemplo:
Propriedades dos loops:
Resultados não são apresentados a menos que a função
print()
seja chamada.A variável var dentro do loop
for{}
for é alterada.
2.11 Algumas funções estatísticas
Função | Descrição |
---|---|
sum(x) | Soma dos elementos de x
|
prod(x) | Produto dos elementos de x
|
max(x) | Máximo dos elementos de x
|
min(x) | Mínimo dos elementos de x
|
which.max(x) | Retorna o índice do maior elemento de x
|
which.min(x) | Retorna o índice do menor elemento de x
|
range(x) | Equivalente a c(min(x),max(x))
|
length(x) | Número de elementos de x
|
mean(x) | Média dos elementos de x
|
median(x) | Mediana dos elementos de x
|
var(x) | Variância dos elementos de x (calculado sobre n-1 elementos). Se x é uma matriz ou data frame a variância (ou covariância) da matriz é calculada |
cor(x) | Correlação dos elementos da matriz x , se for uma matriz ou data frame (1 se x é um vetor) |
var(x, y) ou cov(x, y) | Variância ou covariância entre x e y , ou entre as colunas de x e as respectivas de y , se são matrizes ou data frames. |
cor(x, y) | Correlação linear entre x e y ou matriz de correlação, se são matrizes ou data frames |
Outras funções mais complexas:
Função | Descrição |
---|---|
round(x, n) | Arredonda os elementos de x até n casas decimais |
rev(x) | Inverte a ordem dos elementos de x
|
sort(x) | Ordena os elementos de x em ordem crescente, para ordenar em ordem decrescente usa-se rev(sort(x)) |
log(x, base) | Calcula o logaritmo de x na base
|
match(x, y) | Retorna um vetor do comprimento de x dos elementos de x que estão em y (NA caso não exista) |
which(x == a) | Retorna um vetor dos índices de x se a comparação for verdadeira (TRUE) quando x[i] == a
|
na.omit(x) | Suprime as observações com dados faltantes (NA ) (suprime a linha correspondente se x é uma matriz ou um data frame) |
na.fail(x) | Retorna uma mensagem de erro se x contém ao menos um NA
|
unique(x) | Se x é um vetor ou um data freame retorna um objeto similar, mas com os elementos duplicados omitidos |
table(x, y) | Tabela de contingência de x e y
|
subset(x, …) | Retorna a seleção de x com relação ao critério ... . Se x é um data frame a opção selecionada fornece a variável a ser mantida ou eliminada (usa-se o sinal - menos) |
Consulta a mais funções pode ser feitas na documentação do R em https://rdrr.io/r/.