library(tidyverse)
#---
# +++ Matrix Basics ----
#
matrix( data= 1:20, nrow= 4)
matrix( data= 1:20, nrow= 5)
matrix( data= 1:20, 4)
matrix( data= 1:20, ncol= 4)
matrix( data= 1:20, , 4)
#---
# OBS IMPORTANTE: ordem DEFAULT de preenchimento: por coluna
#---
mA= matrix( data= 1:20, nrow= 4, byrow= T)
mA
#---
# Transposi��o
#---
t(mA)
#---
# Matrizes de caracteres ...
#---
mChar= matrix( data= month.abb, nrow= 4)
#---
# ... ou de logicos
#---
vTemp= ((1:12)%%4) == 1
mLog= matrix( vTemp, nrow= 4)
mLog
#---
# + direto:
#---
matrix( ((1:12)%%4) == 1, 4)
#---
#
# OBS Elementos de uma matriz sempre têm mesmo tipo.
# Se não for assim são modificados!
# Na marra e na surdina.
#
#---
matrix( c(1:10,T,T), 4)
matrix( c(1:10,"T",T), 4)
#
# +++ END Basics ----
#---
#---
# +++ BEG Operações elementares I: Matrizes e Escalares ----
#
mA
2*mA
sqrt(mA)
mA^(1/3)
2^mA
mA>5
paste(mA, "1")
c(mA, "1")
c(mA, 1)
#
# +++ END Operações elementares I: Matrizes e Escalares ----
#---
#---
# +++ BEG Operações elementares II: Matrizes e Vetores ----
#
mA= t(mA)
mA
#---
mA + 1:20 # Business as usual
#---
#---
mA + 1:10 # 2 {length(mA) / length(1:10) } Ciclos
#---
#---
mA + 1:16 # Numero não inteiro de ciclos
#---
1:20+1:16
matrix( 1:20+1:16, 5 )
#---
# outro exemplo de ciclo
#---
mB= matrix( 1:12, 4 )
(1:3)^mB
#
# +++ END Operações elementares II: Matrizes e Vetores ----
#---
#---
# +++ BEG Operações elementares III: Matrizes e Matrizes ----
#
mB
mA
mA + mB
mA= matrix(1:16, 4)
mC= matrix(1:8, 4)
mA+mC
#---
# Produto matricial
#---
dim(mA)
dim(mB)
mA%*%mB
#---
# Inversa
#---
solve(mA)
set.seed(1)
mD= matrix(runif(16), 4)
solve(mD)
mD %*% solve(mD)
round(mD %*% solve(mD), digits=6)
#
# +++ END Operações elementares III: Matrizes e Matrizes ----
#---
#---
# +++ BEG Submatrizes , etc ----
#
mA
mA[1,3] # elemento [1,3]
mA[2,] # segunda linha
mA[1:2,] # primeira e segunda linhas
mA[,c(1,3)] # primeira e terceira colunas
mA[1:2,c(1,3)] # Uma SubMatriz
#---
# Lembrando subvetores
#---
y= 10*(1:11)
length(y)
y
ehPar= c(F, T, F, T, F, T, F, T, F, T, F)
y[ehPar]
ehPar= ((1:length(y))%%2 == 0)
#---
# Análogo pra formação de submatrizes
#---
mD= round(100*mD, 0)
row(mD)
col(mD)
LinMaiorQCol= row(mD)>col(mD)
mD[LinMaiorQCol]
mD
mD[row(mD)==col(mD)]
#
# +++ END Submatrizes , etc ----
#---
#---
# +++ BEG documentando vetores ----
#
y=1:12
names(y)= month.abb
y
y[c(2,4)]
y[c("Jan", "Feb", "Jul")]
#
# +++ END documentando vetores ----
#---
#---
# +++ BEG documentando matrizes ----
#---
mA= matrix(1:20, 5)
dimnames(mA)= list(letters[1:5],month.abb[1:4])
mA
summary(matrix(1:20, 5))
summary(mA)
#---
# +++ END documentando matrizes ----
#---
#---
# END matrizes: vetores especiais ----
#---
#---
# BEG listas: uma estrutura mais geral ----
#---
dadosDeGB=
list( nome="Giordanno Bruno",
idade= 48,
ehCasado= F,
numerosPreferidos= c(pi, log(10)))
#---
# Obs: Ao contrário de vetores e matrizes,
# NÃO é necessário que todas as componentes
# sejam de mesmo tipo
#---
#---
# recuperando componentes
#---
dadosDeGB[[2]]
dadosDeGB$nome
dadosDeGB["nome"]
dadosDeGB[c("nome","idade")]
#---
dadosDeGB[[1:2]] # <=== Isso não dá pra fazer
#---
#---
# incorporando componentes
#---
names(dadosDeGB)
dadosDeGB$anosDeEstudo= 40
names(dadosDeGB)
#
# END listas: uma estrutura mais geral ----
#---