# Dia 1

Este relatório foi feito utilizando R Markdown. Ele pode ser exportado em `.html` ou `.pdf`, basta alterar o `output:` no cabeçalho entre `html_document` e `pdf_document`.

## Primeiro, um "oi" para o mundo.

```{r}
cat("Hello world!")
```

A função `cat` significa "concatenar" e ela vai imprimir o que eu escrevi no console.

## Estabelecendo diretório de trabalho

É a pasta no meu computador que o R "conversa", ou seja, que vai buscar os arquivos de entrada e solta os arquivos de saída. É uma boa prática salvar os scripts, os dados, os gráficos (tudo referente à análise) num mesmo diretório.

```{r}
# Depende do seu computador
# setwd("~/Documents/CursoR") 

getwd() # Se eu não souber onde estou

```

## Operações básicas

O R é uma grande calculadora.

```{r}
1+1.3                 #Decimal definido com "."
2*3
2^3
4/2

sqrt(4)              #raíz quadrada
log(100, base = 10)  #logarítmo na base 10
log(100)             #logarítmo com base neperiana


# Resolvendo problema 
((13+2+1.5)/3) + log(96, base = 4)

```

Lembrando que o que vem antes do parênteses é uma função, e, sendo uma função, existe um manual para ela dentro do R, acesse com:

```{r}
# Pedindo ajuda sobre função do R
?log

```

## Operação com vetores

```{r}
# Diferentes formas de criar um vetor
c(1,3,2,5,2) 
1:10
seq(from=0, to=100, by=5)
# ou
seq(0,100,5) # Se você já souber a ordem dos argumentos da função
seq(from=4, to=30, by=3)
rep(3:5, 2)

# Operações
c(1,4,3,2)*2  # Multiplica todos os elementos por 2
c(4,2,1,5)+c(5,2,6,1) # Soma 4+5, 2+2, 1+6 e assim por diante
c(4,2,1,5)*c(5,2,6,1) # Multiplica 4*5, 2*2, 1*6 e assim por diante
```

## Criando objetos

```{r}
x = c(30.1,30.4,40,30.2,30.6,40.1)
# ou
x <- c(30.1,30.4,40,30.2,30.6,40.1)

y = c(0.26,0.3,0.36,0.24,0.27,0.35)
```

## Operações com os objetos

```{r}
x*2
x + y
x*y
z <- (x+y)/2
z

# Aplicando algumas funções
sum(z)  # soma dos valores de z
mean(z) # média 
var(z)  # variância
```

## Obtendo valores internos dos objetos por indexação

```{r}
z[3] # elemento na terceira posição do vetor
z[2:4]
```

## Para saber algumas características do objeto

```{r}
str(z)
```

## Vetor de caracteres

```{r}
clone <- c("GRA02", "URO01", "URO03", "GRA02", "GRA01", "URO01")
```


## Vetor de fatores (ou variáveis categóricas)

```{r}
clone_fator <- as.factor(clone)
str(clone_fator)
levels(clone_fator)
length(clone_fator)
```

## Vetor lógico

```{r}
logico <- x > 40
logico   # Os elementos são maiores que 40?

# Indica a posição dos TRUE
which(logico)  # Obtendo as posiçoes dos elementos TRUE

x[which(logico)] # Obtendo os números maiores que 40 do vetor x pela posição
```

## Para ficar esperto/a

```{r}
(a <- 1:10)
b <- seq(from = 0.1, to = 1, 0.1)
(b <- b*10)
a==b        # Existe um problema computacional de armazenamento
a==round(b) # Evitar que isso aconteceça arredondando o resultado
?round      # Fiquei com dúvida nessa função

errado <- c(TRUE, "vish", 1) # Não podemos misturar classes num mesmo vetor
errado

```

# Dia 2 

##  Matrizes

```{r}
X <- matrix(1:12, nrow = 6, ncol = 2)
X

W <- matrix(c(x,y), nrow = 6, ncol =2)
W

X*2
X*X        
X%*%t(X)          # Multiplicação matricial

W[4,2] # Número posicionado na linha 4 e coluna 2

colnames(W) <- c("altura", "diametro")
rownames(W) <- clone
W
```

## Data.frames

Vou escrever isso aqui só para mostrar que podemos criar itens no markdown

* Olha esse
* E esse
* Mais um
* Só para ter certeza

```{r}
# Criando objetos
Repeticao <- rep(1:4,3)

Tratamento <- c(rep("L.A",4), rep("L.B",4), rep ("hibridoAB", 4) )

numero_folhas <- c(5,4,5,NA,13,9,10,11,6,9,9,9)
  
altura <- c(95,55,70,NA,61,77,80,97,140,155,175,170)

comprimento <- c(86,30,69,NA,80,77,88,87,95,75,95,100)

# Criando data frame
campo1 <- data.frame("Repeticao" = Repeticao,     # Antes do sinal de "="  
                     "Tratamento" = Tratamento,        # estabelecemos os nomes  
                     "numero_folhas" = numero_folhas,      # das colunas
                     "altura" = altura,
                     "comprimento"= comprimento) 
campo1

#Acessar coluna
campo1$altura
campo1[,4] 

#Acessar elemento
campo1[1,2] 
campo1[3,4] 

#Adicionar nova coluna
altura_m <- campo1$altura/100
altura_m

campo1 <- cbind(campo1, altura_m)
str(campo1)

```

## Exportando e importando dados

```{r}
# Exportando
write.table(campo1, file = "campo1.txt", sep = ";", dec = ".", row.names = FALSE)
write.csv(campo1, file = "campo1.csv", row.names = TRUE)
```

## Importando tabelas

```{r}
campo1_txt <- read.table(file = "campo1.txt", sep=";", dec=".", header = TRUE)
campo1_csv <- read.csv(file = "campo1.csv")
head(campo1_txt)
head(campo1_csv)
```

## Leitura dos dados

```{r}
dados <- read.csv(file = "dados.csv", stringsAsFactors = FALSE, na.strings="-")

```

## If e else

```{r}
if(2 > 3){  #o resultado de 2 > 3 é TRUE
  print("dois é maior que três")
} else {
  print("dois não é maior que três")
}

if(dados[3,5] < 1.5){
  print("Híbrido pequeno demais")
} else {
  print("Tamanho provavelmente adequado")
}

if(dados[8,5] < 1.5){
  print("Híbrido pequeno demais")
} else if (dados[8,5] > 1.5 && dados[8,5] < 2.0){
  print("Tamanho OK")
} else {
    print("Cresceu demais")
}

# Cansativo:
maior_altura = max(dados[,5])

if(dados[1,5] == maior_altura){           # Testando com a primeira linha
  print("A planta 1 é a maior planta")
} else if (dados[2,5] == maior_altura) {  # Testando com a segunda linha
  print("A planta 2 é a maior planta")  
} else if (dados[3,5] == maior_altura) {  # Testando com a terceira linha
  print("A planta 3 é a maior planta")  
} else if (dados[4,5] == maior_altura) {  # Testando com a quarta linha
  print("A planta 4 é a maior planta")  
} else if (dados[5,5] == maior_altura) {  # Testando com a quinta linha
  print("A planta 5 é a maior planta")  
} else {                                  # Cansei
  mensagem = paste("Vou ter que escrever", nrow(dados), "linhas?")
  print(mensagem)  
}
```


## Estruturas de repetição
```{r}

## For

for(i in 1:10){
  print(i)
}

test <- rep(0, times = 10)
for(i in 1:10){
  test[i] <- i*10 
}
test

for(i in 1:nrow(dados)){ 
  if(dados[i,5] < 1.5){
    print("Híbrido pequeno demais")
  } else if (dados[i,5] > 1.5 && dados[i,5] < 2.0){
    print("Tamanho OK")
  } else {
    print("Cresceu demais")
  }
}


maior_altura = max(dados[,5])

# Usando laço de repetição
for(i in 1:nrow(dados)){
  if(dados[i,5] == maior_altura){
    print(paste("A planta", i, "é a maior planta"))
  } 
}

# Usando a função which
indice = which(dados[,5] == maior_altura)
print(paste("A planta", indice, "é a maior planta"))
```

## Loop dentro de loop

```{r}
# Criando uma matrix vazia
ex_mat <- matrix(nrow=10, ncol=10)

# cada número dentro da matrix será o produto no índice da coluna pelo índice da linha
for(i in 1:dim(ex_mat)[1]) {
  for(j in 1:dim(ex_mat)[2]) {
    ex_mat[i,j] = i*j
  }
}

ex_mat
```