Aqui você vê as diferenças entre duas revisões dessa página.
Ambos lados da revisão anterior Revisão anterior Próxima revisão | Revisão anterior | ||
03_apostila:04-dados [2023/08/15 17:38] 127.0.0.1 edição externa |
03_apostila:04-dados [2023/08/15 18:33] (atual) |
||
---|---|---|---|
Linha 19: | Linha 19: | ||
> meu.vetor <- c(10.5,11.3,12.4,5.7) | > meu.vetor <- c(10.5,11.3,12.4,5.7) | ||
> meu.vetor | > meu.vetor | ||
- | [1] 10.5 11.3 12.4 5.7 | + | [1] 10.5 11.3 12.4 5.7 |
> | > | ||
> vetor.vazio <- c() | > vetor.vazio <- c() | ||
Linha 666: | Linha 666: | ||
</code> | </code> | ||
- | Os argumentos básicos da função são o //data.frame// com os valores (''x''), o(s) fator(es) que definem os subconjuntos (''by'', que deve ser uma lista), e a função a calcular de cada vetor do //data frame// (''FUN''). | + | Os argumentos básicos da função são o objeto com os valores (''x''), o(s) fator(es) que definem os subgrupos (''by'', que deve ser uma lista), e a função a ser aplicada a cada vetor em ''x'' (''FUN''). |
Linha 884: | Linha 884: | ||
- Crie um objeto da classe matriz com esses valores. Isso permite realizar as operações matriciais a seguir. | - Crie um objeto da classe matriz com esses valores. Isso permite realizar as operações matriciais a seguir. | ||
- Para calcular o número de indivíduos em cada estágio após um intervalo de tempo, basta multiplicar a matriz de transição pelas abundâncias dos indivíduos em cada estágio. Começando com 50 indivíduos do estágio 1, 25 do estágio 2 e 10 no estágio 3, qual será o número de plantas em cada estágio após três intervalos? | - Para calcular o número de indivíduos em cada estágio após um intervalo de tempo, basta multiplicar a matriz de transição pelas abundâncias dos indivíduos em cada estágio. Começando com 50 indivíduos do estágio 1, 25 do estágio 2 e 10 no estágio 3, qual será o número de plantas em cada estágio após três intervalos? | ||
- | - **Opcional**: A taxa de crescimento geométrico da população é o primeiro autovalor da matriz de transição, que pode ser calculado com a função ''eigen''((consulte a ajuda para interpretar o resultados dessa função)). Se a taxa é maior que um a população está crescendo. É o caso dessa população? | + | - **Opcional**: A taxa de crescimento geométrico da população é o primeiro autovalor da matriz de transição, que pode ser calculado com a função ''eigen''((consulte a ajuda para interpretar o resultados dessa função)). Se a taxa é maior que um a população está crescendo. É o caso dessa população? |
</box> | </box> | ||
Linha 891: | Linha 891: | ||
===== O R como Ambiente de Operações Vetoriais ===== | ===== O R como Ambiente de Operações Vetoriais ===== | ||
- | Na verdade, o R é muito mais que uma simples calculadora. O R é um **ambiente** onde podemos realizar operações vetoriais e matriciais. | + | Na verdade, o R é muito mais que uma simples calculadora. O R é um **ambiente** onde podemos realizar operações vetoriais e matriciais. |
Além das regras básicas para operações com vetores numéricos (ver [[03-funcoes#Vetores: Operações Matemáticas]]), há operações aplicáveis a outros tipos de dados, e as importantíssimas **operações lógicas**, aplicáveis a qualquer classe. | Além das regras básicas para operações com vetores numéricos (ver [[03-funcoes#Vetores: Operações Matemáticas]]), há operações aplicáveis a outros tipos de dados, e as importantíssimas **operações lógicas**, aplicáveis a qualquer classe. | ||
Linha 902: | Linha 902: | ||
[1] NA | [1] NA | ||
Warning message: | Warning message: | ||
- | argument is not numeric or logical: returning NA in: mean.default(sp) | + | argument 'is' not numeric or logical: returning NA in: mean.default(sp) |
> | > | ||
</code> | </code> | ||
- | Mas existem algumas operações que são próprias desse tipo de vetores: | + | Mas existem muitas operações que funcionam ou são próprias desse tipo de vetores: |
<code rsplus> | <code rsplus> | ||
- | > sort( sp ) | + | > sort( sp ) # ordenação de caracteres em ordem crescente |
[1] "Myrcia sulfiflora" "Myrcia sulfiflora" "Syagrus romanzoffianus" | [1] "Myrcia sulfiflora" "Myrcia sulfiflora" "Syagrus romanzoffianus" | ||
[4] "Tabebuia cassinoides" | [4] "Tabebuia cassinoides" | ||
> | > | ||
- | > grep("Myrcia", sp) | + | > grep("Myrcia", sp) # busca por elementos do vetor de caracteres contendo "Myrcia" |
[1] 1 4 | [1] 1 4 | ||
> | > | ||
- | > table( sp ) | + | > table( sp ) # contagem do numero de elementos para cada classe de elemento |
sp | sp | ||
Myrcia sulfiflora Syagrus romanzoffianus Tabebuia cassinoides | Myrcia sulfiflora Syagrus romanzoffianus Tabebuia cassinoides | ||
2 1 1 | 2 1 1 | ||
+ | > | ||
+ | > sub("Myrcia", "M.", sp ) # substituição de caracteres | ||
+ | [1] "M. sulfiflora" "Syagrus romanzoffianus" "Tabebuia cassinoides" "M. sulfiflora" | ||
+ | > | ||
+ | > strsplit(sp, " ") # divisão de cada elemento do vetor por um dado caractere ou símbolo (no caso, um espaço) | ||
+ | [[1]] | ||
+ | [1] "Myrcia" "sulfiflora" | ||
+ | |||
+ | [[2]] | ||
+ | [1] "Syagrus" "romanzoffianus" | ||
+ | |||
+ | [[3]] | ||
+ | [1] "Tabebuia" "cassinoides" | ||
+ | |||
+ | [[4]] | ||
+ | [1] "Myrcia" "sulfiflora" | ||
+ | > | ||
</code> | </code> | ||
+ | |||
+ | Também é possível concatenar vetores de caracteres usando a função ''paste'': | ||
+ | |||
<code rsplus> | <code rsplus> | ||
Linha 935: | Linha 955: | ||
==== Operações Lógicas ==== | ==== Operações Lógicas ==== | ||
- | Algumas operações são válidas para qualquer tipo de vetor. Essas operações envolvem comparações e são chamadas de operações lógicas: | + | Algumas operações são válidas para qualquer tipo de vetor. Essas operações envolvem comparações e são chamadas de operações lógicas: |
<code rsplus> | <code rsplus> | ||
> "Tabebuia cassinoides" == sp | > "Tabebuia cassinoides" == sp | ||
Linha 1048: | Linha 1068: | ||
=== Uma maneira simples de quantificar frequências === | === Uma maneira simples de quantificar frequências === | ||
- | Os vetores lógicos ('''logical''') podem participar de operações matemáticas. Nesse caso o valor '''TRUE''' assume o valor 1, e valor '''FALSE''' assume o valor 0: | + | Os vetores lógicos (''logical'') podem participar de operações matemáticas. Nesse caso o valor ''TRUE'' assume o valor 1, e valor ''FALSE'' assume o valor 0: |
<code rsplus> | <code rsplus> | ||
> f | > f | ||
Linha 1128: | Linha 1148: | ||
===== Subconjuntos e Indexação ===== | ===== Subconjuntos e Indexação ===== | ||
- | Frequentemente teremos que trabalhar não com um vetor inteiro, mas com um //subconjunto// dele. Para obter subconjuntos de um vetor temos que realizar operações de **indexação**, isto é, associar ao vetor um outro vetor de mesmo tamanho com os **índices** dos elementos selecionados. | + | Frequentemente teremos que trabalhar não com um vetor inteiro, mas com um //subconjunto// dele. Para obter subconjuntos de um vetor temos que realizar operações de **indexação**, isto é, associar ao vetor um outro vetor de mesmo tamanho com os **índices** dos elementos selecionados. |
- | O **operador** de indexação é o colchetes '''[]''', e um vetor pode ser indexado de três formas principais: | + | O **operador** de indexação é o colchetes ''[]'', e um vetor pode ser indexado de três formas principais: |
- | A) **Vetor de números inteiros positivos**: os números se referem às posições desejadas do vetor indexado. | + | A) **Vetor de números inteiros positivos**: os números se referem às posições desejadas do vetor indexado. |
<code rsplus> | <code rsplus> | ||
> a | > a | ||
Linha 1162: | Linha 1182: | ||
- | C) **Vetor lógico**: os elementos do vetor lógico correspondentes a '''TRUE''' são selecionados, os elementos correspondentes a '''FALSE''' são excluídos. | + | C) **Vetor lógico**: os elementos do vetor lógico correspondentes a ''TRUE'' são selecionados, os elementos correspondentes a ''FALSE'' são excluídos. |
<code rsplus> | <code rsplus> | ||
> b | > b | ||
Linha 1179: | Linha 1199: | ||
</code> | </code> | ||
- | Na indexação por vetores lógicos, esses vetores devem ter **o mesmo comprimento** do vetor indexado. Caso contrário a operação será defeituosa: | + | Na indexação por vetores lógicos, esses vetores devem ter **o mesmo comprimento** do vetor indexado. Caso contrário a operação será defeituosa: |
<code rsplus> | <code rsplus> | ||
> b | > b | ||
Linha 1191: | Linha 1211: | ||
As operações por vetores lógicos podem combinar vários critérios, por meio dos operadores "E", "OU" e "NÃO": | As operações por vetores lógicos podem combinar vários critérios, por meio dos operadores "E", "OU" e "NÃO": | ||
- | <code rsplus> | + | |
<WRAP center round box 60%> | <WRAP center round box 60%> | ||
- | Por questão de segurança do wiki contra spam algumas palavras são proibidas. Nos exemplos a seguir a palavra "estupro" em inglês foi substituida por "Abuso", por esse motivo para rodar as linhas de código deve retornar a palavra para o idioma inglesa. | + | Por questão de segurança do wiki contra spam algumas palavras são proibidas. Nos exemplos a seguir a palavra "estupro" em inglês foi substituída por "Abuso", por esse motivo para rodar as linhas de código deve retornar a palavra para o idioma inglesa. |
</WRAP> | </WRAP> | ||
+ | <code rsplus> | ||
## Primeiras 5 linhas do data frame USArrests (crimes/1000 habitantes em cada estado dos EUA, em 1973): | ## Primeiras 5 linhas do data frame USArrests (crimes/1000 habitantes em cada estado dos EUA, em 1973): | ||
> USArrests[1:5,] | > USArrests[1:5,] | ||
Linha 1215: | Linha 1236: | ||
</code> | </code> | ||
- | D) **Vetor caracter**: nesse caso o vetor deve ser //nomeado// (função '''names''') por um vetor '''character''': | + | D) **Vetor caracter**: nesse caso o vetor deve ser //nomeado// (função ''names'') por um vetor ''character'': |
<code rsplus> | <code rsplus> | ||
> zoo = c(4, 10, 2, 45) | > zoo = c(4, 10, 2, 45) | ||
> names(zoo) = c("onça", "anta", "tatu", "guará") | > names(zoo) = c("onça", "anta", "tatu", "guará") | ||
- | > zoo[ c("anta","guará") ] | + | > zoo[ c("anta", "guará") ] |
anta guará | anta guará | ||
10 45 | 10 45 |