Ferramentas do usuário

Ferramentas do site


02_tutoriais:tutorial1:start

Diferenças

Aqui você vê as diferenças entre duas revisões dessa página.

Link para esta página de comparações

Ambos lados da revisão anterior Revisão anterior
Próxima revisão
Revisão anterior
02_tutoriais:tutorial1:start [2021/02/23 11:36]
adalardo [Classe dos objetos]
02_tutoriais:tutorial1:start [2023/08/11 19:08] (atual)
Linha 12: Linha 12:
  
 <WRAP center round important 90%> <WRAP center round important 90%>
-Antes de iniciar essa primeira aulas veja a videoaula ​sobre o esquema do curso em [[01_curso_atual:​start|]]+Antes de iniciar essa primeira aulas veja a vídeo-aula ​sobre o esquema do curso em [[01_curso_atual:​start|]]
  
 <WRAP center round box 80%> <WRAP center round box 80%>
  
-Meu nome é Alexandre e costumo falar devagar nas videoaulas. Como elas estão em um canal do youtube ​é possível acelerar clicando em ''​Settings''​ (simbolo ​de engrenagem que aparece na barra inferior do video) e em seguida em ''​Playback speed''​. Procure a sua velocidade!+Meu nome é Alexandre e costumo falar devagar nas vídeo-aulas. Como elas estão em um canal do Youtube ​é possível acelerar clicando em ''​Settings''​ (símbolo ​de engrenagem que aparece na barra inferior do vídeo) e em seguida em ''​Playback speed''​. Procure a sua velocidade!
  
 </​WRAP>​ </​WRAP>​
Linha 24: Linha 24:
 <WRAP center round box 60%> <WRAP center round box 60%>
  
-{{youtube>​YjYfChQpMQw}}+{{ youtube>​YjYfChQpMQw?large |}}
  
 </​WRAP>​ </​WRAP>​
Linha 36: Linha 36:
 */ */
  
-Outra característica do R é que ele é uma linguagem orientada a objetos, ou seja, manipulamos objetos com procedimentos inerentes à classe a que eles pertencem. Essas características do R fazem com que esse ambiente de programação seja similar uma oficina onde matéria-prima (objetos) e ferramentas ((funções também são uma classe de objetos)) são manipuladas para efetuar uma tarefa que normalmente se resume na construção de outros objetos, ou //'​obras de arte virtuais'//​. Vamos entrar nessa oficina! ​+Outra característica do R é que ele é uma linguagem orientada a objetos, ou seja, manipulamos objetos com procedimentos inerentes à classe a que eles pertencem. Essas características do R fazem com que esse ambiente de programação seja similar ​uma oficina onde matéria-prima (objetos) e ferramentas ((funções também são uma classe de objetos)) são manipuladas para efetuar uma tarefa que normalmente se resume na construção de outros objetos, ou //'​obras de arte virtuais'//​. Vamos entrar nessa oficina! ​
  
 ===== ateliêR ===== ===== ateliêR =====
  
-Vamos usar uma interface web para rodar o R.  Nos quadros ​ **rdrr.io** é possível submeter linhas de código a um servidor que interpreta o código do R e retorna o resultado da operação em uma outra janela. Caso o servidor não esteja disponível,​ ou a conexão da internete ​não seja boa, é possível rodar as linhas de código em uma sessão do R no seu computador, apenas copiando e colando as linhas de código apresentadas antes dos quadros do **rdd.io**.+Vamos usar uma interface web para rodar o R.  Nos quadros ​ **rdrr.io** é possível submeter linhas de código a um servidor que interpreta o código do R e retorna o resultado da operação em uma outra janela. Caso o servidor não esteja disponível,​ ou a conexão da internet ​não seja boa, é possível rodar as linhas de código em uma sessão do R no seu computador, apenas copiando e colando as linhas de código apresentadas antes dos quadros do **rdd.io**.
  
  
Linha 57: Linha 57:
 <​html>​ <​html>​
 <iframe width='​100%'​ height='​400'​ src='​https://​rdrr.io/​snippets/​embed/?​code=print(%22Hello%2C%20world!%22)'​ frameborder='​0'></​iframe>​ <iframe width='​100%'​ height='​400'​ src='​https://​rdrr.io/​snippets/​embed/?​code=print(%22Hello%2C%20world!%22)'​ frameborder='​0'></​iframe>​
- 
 </​html>​ </​html>​
- 
  
 Os computeiros dizem que a primeira coisa que devemos fazer quando aprendemos uma linguagem computacional é fazê-la dizer [[https://​en.wikipedia.org/​wiki/​%22Hello,​_World!%22_program| Hello, world!]]. Os computeiros dizem que a primeira coisa que devemos fazer quando aprendemos uma linguagem computacional é fazê-la dizer [[https://​en.wikipedia.org/​wiki/​%22Hello,​_World!%22_program| Hello, world!]].
Linha 82: Linha 80:
  
  
-A mensagem ​ ''​Error:​ object '​Hello'​ not found'',​ significa que o R não encontrou o objeto com o nome ''​Hello''​. Nossa segunda definição:​ **caracteres que não estão entre aspas o R interpreta como sendo o nome de objetos**. No caso, o objeto com o nome ''​Hello''​ não foi encontrado!+A mensagem ​ ''​Error ​in print(Hello) ​: object '​Hello'​ not found'',​ significa que o R não encontrou o objeto com o nome ''​Hello''​. Nossa segunda definição:​ **caracteres que não estão entre aspas o R interpreta como sendo o nome de objetos**. No caso, o objeto com o nome ''​Hello''​ não foi encontrado!
  
 ===== Atribuição ===== ===== Atribuição =====
Linha 102: Linha 100:
  
 Nas regras de boas práticas de estilo da linguagem, em geral, se diz que deve-se usar a primeira forma, que a segunda é aceitável, mas que não devemos usar a terceira! Nas regras de boas práticas de estilo da linguagem, em geral, se diz que deve-se usar a primeira forma, que a segunda é aceitável, mas que não devemos usar a terceira!
 +
 +Outra boa prática de estilo da linguagem é, uma vez escolhida a forma a ser usada, usar sempre a mesma forma ao longo de seus **//​scripts//​**. Iremos definir o que é um **//​script//​** no item [[http://​ecor.ib.usp.br/​doku.php?​id=02_tutoriais:​tutorial1:​start#​o_codigo|'​O Código'​]] desse tutorial.
  
 Vamos criar nosso primeiro objeto no R: Vamos criar nosso primeiro objeto no R:
Linha 136: Linha 136:
 Agora temos novamente o retorno de ''"​Hello,​ world!"'',​ mas dessa vez a frase vem do objeto ''​Hello''​. Quando chamamos um objeto que existe no R ele nos retorna o que está armazenado nele. Agora temos novamente o retorno de ''"​Hello,​ world!"'',​ mas dessa vez a frase vem do objeto ''​Hello''​. Quando chamamos um objeto que existe no R ele nos retorna o que está armazenado nele.
  
-==== Classe dos objetos ====+===== Classes de objetos ​=====
  
  
-Todo o objeto criado em uma sessão do R é atribuído a uma classe. Isso é feito automaticamente pelo R, caso o usuário não explicite a classe do objeto na sua criação. ​Vamos então ver a classe do objeto que criamos:+Todo o objeto criado em uma sessão do R é atribuído a uma classe. Isso é feito automaticamente pelo R, caso o usuário não explicite a classe do objeto na sua criação. ​Para acessar ​a classe do objeto que criamos, utilizamos a função ''​class''​:
  
 <code rsplus> <code rsplus>
Linha 154: Linha 154:
  
  
-==== Classe Function ​ ====+==== A classe '​function' ​ ====
  
-No nosso primeiro código do R havia um objeto chamado ''​print''​. Vamos visualizar a classe a que pertence esse objeto:+No nosso primeiro código do Rhavia um objeto chamado ''​print''​. Vamos visualizar a classe a que pertence esse objeto:
  
 <code rsplus> <code rsplus>
Linha 167: Linha 167:
  
  
-O R nos diz que esse objeto é da classe função. Os objeto ​da classe ''​function''​ em geral estão associados a uma documentação que nos ajudam a entender como usar essa ferramentaPara acessar a documentação no R, utilizamos outra ferramenta que é a função ''​help''​((O caracter ''?''​ funciona como um atalho para essa função)).+O R nos diz que esse objeto é da classe função. Os objetos ​da classe ''​function''​ em geral estão associados a uma documentação que nos ajudam a entender como usar essa ferramentaPara acessar a documentação no R, utilizamos outra ferramenta que é a função ''​help''​((O caracter ''?''​ funciona como um atalho para essa função)).
  
  
Linha 182: Linha 182:
  
  
-Uma questão interessante aqui é que estamos usando uma ferramenta, a função ''​help'',​ para manipular o objeto ''​print'',​ que por sua vez também é uma funçãoO que acontece se chamarmos o objeto ''​help''​ sem os parênteses?​+Uma questão interessante aqui é que estamos usando uma ferramenta, a função ''​help'',​ para manipular o objeto ''​print'',​ que por sua vez também é uma funçãoO que acontece se chamarmos o objeto ''​help''​ sem os parênteses?​
  
  
Linha 195: Linha 195:
 </​html>​ </​html>​
  
-É muito importante diferenciar o objeto que contém o código, que é a funçãodo procedimento ao executar essa função. A diferença entre um e outro está em um detalhe pequeno que são os parênteses <wrap hi>​(...)</​wrap>​ que acompanham o nome da função. O nome da função acompanhado dos parênteses ​fazem com que o procedimento associado a esse objeto seja executadoCaso não seja acompanhada dos parênteses,​ o objeto da classe função irá retornar aquilo que está atribuído a ele: __o texto de código que a função contém__. ​+É muito importante diferenciar o objeto que contém o código ​da função do procedimento ao executar essa função. A diferença entre um e outro está em um detalhe pequeno que são os parênteses <wrap hi>​(...)</​wrap>​ que acompanham o nome da função. O nome da função acompanhado dos parênteses ​faz com que o procedimento associado a esse objeto seja executadoCaso não seja acompanhada dos parênteses,​ o objeto da classe função irá retornar aquilo que está atribuído a ele: __o texto de código que a função contém__. ​
  
  
-==== Argumentos ====+==== Argumentos ​das funções ​====
  
  
Linha 213: Linha 213:
 </​html>​ </​html>​
  
-Para explicitar que estamos manipulando objetos, podemos fazer o procedimento em duas etapas, primeiro ​atribuíndo ​o valor ''​1,​23456789''​ a um objeto e depois solicitando para que ele seja mostrado na tela com apenas 3 digitos.+Para explicitar que estamos manipulando objetos, podemos fazer o procedimento em duas etapas, primeiro ​atribuindo ​o valor ''​1,​23456789''​ a um objeto e depois solicitando para que ele seja mostrado na tela com apenas 3 dígitos.
  
  
Linha 222: Linha 222:
  
 </​code>​ </​code>​
- 
  
 <​html>​ <​html>​
Linha 231: Linha 230:
 **O padrão decimal do R** **O padrão decimal do R**
 \\ \\
-Note que no utilizamos " ​" ​para indicar ​que um número é decimal e isso ocorre pois o R utiliza ​o padrão de números em Inglês. ​Já em Português ​o padrão ​é utilizar a vírgula como indicação ​de decimaisporém um número com vírgula ​não é reconhecido pelo R, retornando um erro!+Note que utiliza o símbolo de ''​.'' ​para indicar o decimal no padrão de números em Inglês. ​O padrão ​em Português, que é o uso de '',''​ como indicador, não funciona no R! 
 </​WRAP>​ </​WRAP>​
  
Linha 243: Linha 242:
  
 </​code>​ </​code>​
- 
  
  
Linha 251: Linha 249:
 </​html>​ </​html>​
  
-Porque o objeto ''​numero''​ é manipulado diferentemente do objeto ''​palavra''?​ Por que são objetos de classes diferentes e a função ''​print''​ reconhece essa diferença e trata eles de forma diferente. Quanto manipula números o argumento ''​digits''​ faz sentido, quando ​o objeto é da classe ''​characters''​ esse argumento é desprezado. Aqui tem um conceito avançado da linguagema função ''​print'' ​chama um método que executa diferentes procedimentos dependendo da classe do objeto que ela manipula. Podemos dizer que o método é um conjunto de funções.  +==== As classes '​numeric'​ e '​character'​ ==== 
-Para acessar a classe a que um objeto pertence usamos a função ''​class''​.+ 
 + 
 +Porque o objeto ''​numero''​ é manipulado diferentemente do objeto ''​palavra''?​ Por que são objetos de classes diferentes e a função ''​print''​ reconhece essa diferença e trata eles de forma diferente. Quanto ​a função ​manipula números ​(i.e. classe ''​numeric''​) ​o argumento ''​digits''​ faz sentido. Quando ​o objeto é da classe ''​character''​ esse argumento é desprezado. Aqui tem um conceito avançado da linguagema função ''​print''​ executa diferentes procedimentos dependendo da classe do objeto que ela manipula.
  
 +Já vimos anteriormente que para acessar a classe a que um objeto pertence podemos usar a função ''​class'':​
  
 <code rsplus> <code rsplus>
Linha 269: Linha 270:
  
  
-Vamos agora usar uma outra função para exemplificar a sintaxe básica do R. A função em questão é ''​round'',​ que arredonda um valor numérico até a casa decimal solicitada, diferentemente ​do ''​print''​ que não modifica o valor, apenas imprime ele com o número de casa decimais solicitado. O ''​round'',​ por sua vez, faz a transformação ​do valor arredondando o valor. ​+Vamos agora usar uma outra função para exemplificar a sintaxe básica do R. A função em questão é ''​round'',​ que arredonda um valor numérico até a casa decimal solicitada. Diferentemente ​do ''​print''​que não modifica o valor, apenas imprime ele com o número de casa decimais solicitado, o ''​round'',​ por sua vez, faz a transformação arredondando o valor ((arredondamentos podem ser danosos, principalmente para cálculos sequenciais e números pequenos))
  
 A primeira ação que deve ter ao utilizar uma função no R é: **__SEMPRE LER A DOCUMENTAÇÃO__**. ​ A primeira ação que deve ter ao utilizar uma função no R é: **__SEMPRE LER A DOCUMENTAÇÃO__**. ​
Linha 284: Linha 285:
 **__Cadê o nome do argumento?​__** **__Cadê o nome do argumento?​__**
  
-Note que o código acima não tem o nome dos argumentos. Estamos usando uma das regras dos argumentos no R que é a posição. Caso o nome não seja dado, o R usa a posição para atribuir o valor ao argumento. É possível usar ambas regras, posição e nome, o que é bastante comum. Uma outra regra é a do padrão único do nome simplificado. Por exemplo, o ''​dig =  3''​ será reconhecido como ''​digits = 3 ''​ desde que não haja nenhum outro argumento que comece com ''​dig''​ no nome.  Como sabemos a posição e nome dos argumentos? No ''​help''​. Consulte sempre a documentação! Quase todas as funções que aparecem nos códigos do wiki estão conectadas a sua documentação por hiperlink ​((alguns links não funcionam, mas a maior parte sim)), use e abuse! ​+Note que o código acima não tem o nome dos argumentos. Estamos usando uma das regras dos argumentos no R que é a posição. Caso o nome não seja dado, o R usa a posição para atribuir o valor ao argumento. É possível usar ambas regras, posição e nome, o que é bastante comum. Uma outra regra é a do padrão único do nome simplificado. Por exemplo, o ''​dig =  3''​ será reconhecido como ''​digits = 3 ''​ desde que não haja nenhum outro argumento que comece com ''​dig''​ no nome.  Como sabemos a posição e nome dos argumentos? No ''​help''​. Consulte sempre a documentação! Quase todas as funções que aparecem nos códigos do wiki estão conectadas a sua documentação por um hiperlink. Portanto, use e abuse! ​
  
 </​WRAP>​ </​WRAP>​
Linha 297: Linha 298:
  
  
 +==== Sintaxe básica ====
  
-<WRAP center round box 100%> 
 A sintaxe básica do R pode ser definida como: A sintaxe básica do R pode ser definida como:
  
Linha 307: Linha 308:
 </​code>​ </​code>​
  
-Podemos ler o comando acima como sendo: "​utilize a ferramenta ''​tool''​ para manipular o objeto ''​ x ''​ tendo  o argumento ​ ''​arg2''​ com o atributo ​ ''​y''​ e a opção ''​arq3''​ como ''​z''​. O resultado dessa manipulação é armazenado no objeto ''​object''​. Note que o R, nesse caso, não devolveria nada na tela, pois o resultado da manipulação é atribuído a um objeto.+Podemos ler o comando acima como sendo: "​utilize a ferramenta ''​tool''​ para manipular o objeto ''​ x ''​ tendo  o argumento ​ ''​arg2''​ com o atributo ​ ''​y''​ e a opção ''​arg3''​ como ''​z''​. O resultado dessa manipulação é armazenado no objeto ​de nome ''​object''​. Note que o R, nesse caso, não devolveria nada na tela, pois o resultado da manipulação é atribuído a um objeto ​((para atribuir o resultado a um objeto e ao mesmo tempo mostrar na tela, utilize parênteses iniciando e fechando a linha de comando)). 
  
-</​WRAP>​ 
  
 =====  Estrutura e tipos de dados ===== =====  Estrutura e tipos de dados =====
Linha 315: Linha 316:
 Até aqui vimos dois tipos de informação que podem ser manipuladas no R: caracteres e números. ​ Até aqui vimos dois tipos de informação que podem ser manipuladas no R: caracteres e números. ​
 Os números, por sua vez, podem ser de dois tipos: números com decimais (''​numeric''​) e inteiros (''​integer''​). Essa distinção é importante para a maneira como o R armazena essa informação na memória do computador, de resto elas funcionam como números racionais na matemática clássica. Os números, por sua vez, podem ser de dois tipos: números com decimais (''​numeric''​) e inteiros (''​integer''​). Essa distinção é importante para a maneira como o R armazena essa informação na memória do computador, de resto elas funcionam como números racionais na matemática clássica.
-No capítulo seguinte vamos tratar das funções matemáticas mais a fundo. Aqui vamos apenas ver as bases conceituais dos tipos de dados básicos e qual a estrutura básica de armazenamento em objetos. As operações da algebra ​básicas no R usam os mesmos ​simbolos ​que na matemática tradicional:​ ''​+'',​ ''​-'',​ ''/''​ e ''​*''​. ​+No capítulo seguinte vamos tratar das funções matemáticas mais a fundo. Aqui vamos apenas ver as bases conceituais dos tipos de dados básicos e qual a estrutura básica de armazenamento em objetos. As operações da álgebra ​básicas no R usam os mesmos ​símbolos ​que na matemática tradicional:​ ''​+'',​ ''​-'',​ ''/''​ e ''​*''​. ​
  
  
Linha 333: Linha 334:
 </​html>​ </​html>​
  
-Como vimos na sessão ​anterior podemos atribuir valores numéricos a um objeto. Depois disso, podemos manipular os valores indiretamente por intermédio do objeto.  ​+Como vimos na seção ​anterior podemos atribuir valores numéricos a um objeto. Depois disso, podemos manipular os valores indiretamente por intermédio do objeto.  ​
  
 <code rsplus> <code rsplus>
Linha 349: Linha 350:
 </​html>​ </​html>​
  
-Atribuímos o valor ''​10''​ ao objeto ''​dez''​ e depois manipulamos o objeto ''​dez''​. Isso não parece ser uma vantagem. Estamos trocando dois dígitos, o valor ''​10'',​ por um objeto que contem ​3 letras, o ''​dez''​. A vantagem começa quando atribuímos o resultado de operações a um outro objeto.+Atribuímos o valor ''​10''​ ao objeto ''​dez''​ e depois manipulamos o objeto ''​dez''​. Isso não parece ser uma vantagem. Estamos trocando dois dígitos, o valor ''​10'',​ por um objeto que contém ​3 letras, o ''​dez''​. A vantagem começa quando atribuímos o resultado de operações a um outro objeto.
  
 <code rsplus> <code rsplus>
Linha 367: Linha 368:
  
  
-Ficaria ainda melhor se pudessemos ​operar mais de um valor de uma vez. Como armazenar mais de um valor em um objeto? Usamos ​uma função ''​c''​ que significa ​**c**oncatenar ou **c**ombinar. Os elementos combinados são a estrutura básica de dados no R, que é o objecto ​da classe ''​vector''​. Esse é o elemento básico dos objetos no R. Mesmo que o objeto só tenha um elemento, trata-se de um vetor com uma posição+Ficaria ainda melhor se pudéssemos ​operar mais de um valor de uma vez. Como armazenar mais de um valor em um objeto? Usamos ​função ''​c''​ que significa ​''​c''​oncatenar ou ''​c''​ombinar. Os elementos combinados são a estrutura básica de dados no R, que é o objeto ​da classe ''​vector''​. Esse é o elemento básico dos objetos no R. Mesmo que o objeto só tenha um elemento, trata-se de um vetor com comprimento igual a um
  
  
Linha 387: Linha 388:
  
 Note que, antes de iniciar a apresentação dos valores que estão no vetor ''​contadez''​ o R apresenta o valor 1 entre colchetes ''​[1]''​. Caso o nosso vetor fosse longo e tivesse que ser apresentado em várias linhas, outros valores em colchetes iriam iniciar essa outras linhas de apresentação dos dados. Esses valores representam a indexação do elemento que inicia a linha de apresentação do conteúdo do vetor. Ou seja, o elemento na posição 1, no nosso caso é o valor ''​1''​.  ​ Note que, antes de iniciar a apresentação dos valores que estão no vetor ''​contadez''​ o R apresenta o valor 1 entre colchetes ''​[1]''​. Caso o nosso vetor fosse longo e tivesse que ser apresentado em várias linhas, outros valores em colchetes iriam iniciar essa outras linhas de apresentação dos dados. Esses valores representam a indexação do elemento que inicia a linha de apresentação do conteúdo do vetor. Ou seja, o elemento na posição 1, no nosso caso é o valor ''​1''​.  ​
-Vamos inverter esse vetor, em seguida combiná-lo com o vector ​anterior!+Vamos inverter esse vetor, em seguida combiná-lo com o vetor anterior!
  
  
Linha 406: Linha 407:
 </​html>​ </​html>​
  
-Agora, como fazemos para acessar ​algum elemento ​dentro desse vetor? Para isso usamos a indexação de posição. ​+Agora, como fazemos para acessar ​elementos específicos ​dentro desse vetor? Para isso usamos a indexação de posição. ​
  
 **//Por padrão no R o primeiro elemento de um vetor está na posição 1//**. **//Por padrão no R o primeiro elemento de um vetor está na posição 1//**.
  
-Essa frase pouco informativa é uma detalhe importante. Em muitas ​linguagem ​computacionais,​ diria até que a maioria das linguagens mais populares, a indexação ​começar ​pela posição definida como ''​0''​ (zero)! ​ Mais a frente vamos usar outras indexações de vetores e de outras classes de objetos de dados. Abaixo temos alguns exemplos, simples para vetores:+Essa frase pouco informativa é um detalhe importante. Em muitas ​linguagens ​computacionais,​ diria até que a maioria das linguagens mais populares, a indexação ​começa ​pela posição definida como ''​0''​ (zero)! ​ Mais a frente vamos usar outras indexações de vetores e de outras classes de objetos de dados. Abaixo temos alguns exemplos, simples para vetores:
  
  
Linha 426: Linha 427:
  
  
-==== Classes ​Date ====+==== A classe 'Date' ​====
  
 Crie objetos com as datas do tri e tetracampeonatos mundiais do Brasil((fonte:​ [[http://​pt.fifa.com/​worldcup/​archive/​|FIFA]] )): Crie objetos com as datas do tri e tetracampeonatos mundiais do Brasil((fonte:​ [[http://​pt.fifa.com/​worldcup/​archive/​|FIFA]] )):
Linha 433: Linha 434:
 copa94 <- "​17/​07/​94" ​ copa94 <- "​17/​07/​94" ​
 </​code>​ </​code>​
-Qual a diferença em dias entre estas datas? A subtração retorna um erro (verifique):​+Qual a diferença em dias entre essas datas? A subtração retorna um erro (verifique):​
 <code rsplus> <code rsplus>
 copa94 - copa70 copa94 - copa70
Linha 444: Linha 445:
  
  
-Isto acontece porque os objetos são caracteres, uma classe que obviamente não permite operações aritméticas. Já sabemos verificar a classe de um objeto, digitando o código:+Esse erro acontece porque os objetos são caracteres, uma classe que obviamente não permite operações aritméticas. Já sabemos verificar a classe de um objeto, digitando o código:
  
 <code rsplus> <code rsplus>
Linha 472: Linha 473:
  
  
-Inclua na janela do R online abaixo o código que gera os objetos ''​copa70''​ e ''​cop94'',​ em seguida verifique a classe a que pertencem, ​ e depois faça a  ​a transformação para a classe ''​Date''​ e a subtração entre eles.  ​+Inclua na janela do R online abaixo o código que gera os objetos ''​copa70''​ e ''​cop94'',​ em seguida verifique a classe a que pertencem, ​ e depois faça a transformação para a classe ''​Date''​ e a subtração entre eles.  ​
  
 <WRAP center round tip 80%> <WRAP center round tip 80%>
Linha 486: Linha 487:
  
  
-==== Dado Lógico ​====+==== A classe '​logical' ​====
  
 Até o momento, vimos algumas naturezas de informação que podemos armazenar e manipular no R: caracteres, datas e números. ​ Uma outra natureza importante de dado básico no R é chamada de lógica. Até o momento, vimos algumas naturezas de informação que podemos armazenar e manipular no R: caracteres, datas e números. ​ Uma outra natureza importante de dado básico no R é chamada de lógica.
Linha 504: Linha 505:
 </​html>​ </​html>​
  
-Além disso, o R retorna ''​TRUE''​ ou ''​FALSE''​ quando fazemos ​alguma ​procedimento utilizando operadores lógicos. ​+Além disso, o R retorna ''​TRUE''​ ou ''​FALSE''​ quando fazemos ​algum procedimento utilizando operadores lógicos. ​
  
 <WRAP center round box 60%> <WRAP center round box 60%>
Linha 528: Linha 529:
 numero < 1 numero < 1
 numero > 1 numero > 1
-## abaixo primeiro imprime o valor e depois faz o teste logico+## abaixo primeiro imprime o valor e depois faz o teste lógico
 print(numero,​ digits = 4) == numero  ​ print(numero,​ digits = 4) == numero  ​
 round(numero,​ digits = 4) == numero round(numero,​ digits = 4) == numero
Linha 563: Linha 564:
  
  
-==== Classe Fator ====+==== A classe '​factor' ​==== 
 + 
 +Para a melhor compreender essa classe de objetos no R, o Prof. Alexandre preparou uma vídeo-aula específica,​ disponível abaixo. 
 <WRAP center round box 60%> <WRAP center round box 60%>
  
-{{youtube>​6cLtNwBE7Fs}}+{{ youtube>​6cLtNwBE7Fs?large |}}
  
 </​WRAP>​ </​WRAP>​
Linha 588: Linha 592:
 </​code>​ </​code>​
  
-** Rode o código abaixo e avalie o que está sendo produzido em cada linha de comando **. Caso fique com dúvidas a primeira coisa a fazer é consultar o ''​help()''​ da função. O quadro onde temos o código abaixo, pode ser editado e pode rodar novamente com outro código. Fique vontade para explorar a documentação das funções que estamos apresentando.+** Rode o código abaixo e avalie o que está sendo produzido em cada linha de comando **. Caso fique com dúvidas a primeira coisa a fazer é consultar o ''​help()''​ da função. O quadro onde temos o código abaixo, pode ser editado e pode rodar novamente com outro código. Fique à vontade para explorar a documentação das funções que estamos apresentando.
  
 <​html>​ <​html>​
- +<iframe width='​100%'​ height='​300' src='​https://​rdrr.io/​snippets/​embed/?​code=herb%20%3C-%20c(%22A%22%2C%20%22M%22%2C%20%22M%22%2C%20%22A%22%2C%20%22A%22%2C%20%22M%22%2C%20%22M%22%2C%20%22B%22%2C%20%22A%22%2C%20%22A%22%2C%20%22A%22%2C%20%22A%22%2C%20%22B%22%2C%20%22A%22)%0AherbFactor%20%3C-%20factor(herb)%0AherbTable%20%3C-%20table(herbFactor)%0AherbTable%0Aplot(herbTable)'​ frameborder='​0'></​iframe>​
-<iframe width='​100%'​ height='​600' src='​https://​rdrr.io/​snippets/​embed/?​code=herb%20%3C-%20c(%22A%22%2C%20%22M%22%2C%20%22M%22%2C%20%22A%22%2C%20%22A%22%2C%20%22M%22%2C%20%22M%22%2C%20%22B%22%2C%20%22A%22%2C%20%22A%22%2C%20%22A%22%2C%20%22A%22%2C%20%22B%22%2C%20%22A%22)%0AherbFactor%20%3C-%20factor(herb)%0AherbTable%20%3C-%20table(herb)%0AherbTable%0Aplot(herbTable)'​ frameborder='​0'></​iframe>​ +
 </​html>​ </​html>​
  
Linha 605: Linha 607:
 </​code>​ </​code>​
  
-Modifique o código da janela acima, ​incluíndo ​o argumento ''​levels''​ na função ''​factor''​ e rode novamente o código todo na janela ​abai+Modifique o código da janela acima, ​incluindo ​o argumento ''​levels''​ na função ''​factor''​ e rode novamente o código todo na janela ​abaixo.
  
 <​html>​ <​html>​
Linha 613: Linha 615:
 <WRAP center round important 60%> <WRAP center round important 60%>
  
-**NOTA:** há uma classe para fatores ordenados que poderia se aplicar aqui, mas seu uso tem implicações importantes nos resultados de algumas análises, que no momento não vêm ao caso. Mais informações a respeito na ajuda da função ​[[http://​finzi.psych.upenn.edu/​R/​library/​base/​html/​factor.html|factor]].+**NOTA:** há uma classe para fatores ordenados que poderia se aplicar aqui, mas seu uso tem implicações importantes nos resultados de algumas análises, que no momento não vêm ao caso. Mais informações a respeito na ajuda da função: ​''​help(factor)''​.
 </​WRAP>​ </​WRAP>​
  
Linha 619: Linha 621:
 ===== O Código ===== ===== O Código =====
  
-Antes de continuar a introdução aos conceitos básicos do R, vamos enteder ​uma conduta importante em programação. Um dos primeiros hábitos que você deve adquirir para trabalhar com o R é **não digitar os comandos diretamente no console do R((Console é a interface de interação com o interpretador da linguagem: recebe o comando, ​ envia ao interpretador e retorna a resposta. O que vinhamos ​usando no início desse tutorial é um interpretador online do R))**, e sim em um arquivo texto, que chamamos de **//​script//​** ou **//​código//​**. Essa intermediação entre o texto do comando e o interpretador,​ feita pelo script, é importante pois garante que o que está sendo direcionado ao R é armazenado no arquivo texto, que por fim, pode ser salvo e armazenado no computador, como um registro do procedimento executado ​para ser utilizar novamente quando ​necessário. ​+Antes de continuar a introdução aos conceitos básicos do R, vamos entender ​uma conduta importante em programação. Um dos primeiros hábitos que você deve adquirir para trabalhar com o R é **não digitar os comandos diretamente no console do R((Console é a interface de interação com o interpretador da linguagem: recebe o comando, ​ envia ao interpretador e retorna a resposta. O que vínhamos ​usando no início desse tutorial é um interpretador online do R))**, e sim em um arquivo texto, que chamamos de **//​script//​** ou **//​código//​**. Essa intermediação entre o texto do comando e o interpretador,​ feita pelo script, é importante pois garante que o que está sendo direcionado ao R é armazenado no arquivo texto. Esse arquivo ​pode ser salvo, como um registro do procedimento executado, mas principalmente ​para que ele possa ser utilizado e melhorado sempre que necessário. ​
  
 <WRAP center round box 90%> <WRAP center round box 90%>
Linha 625: Linha 627:
 **__Reprodutibilidade do procedimento__** **__Reprodutibilidade do procedimento__**
  
-Quando trabalhamos em uma planilha eletrônica,​ a partir de dados brutos, podemos salvar os gráficos ou os dados modificados após manipulados. Entretanto, o procedimento não é salvo. Se precisar fazer o mesmo procedimento para outro conjunto de dados precisará lembrar todas as etapas e a ordem em que foram executadas. Em programação,​ o script é nosso roteiro do procedimento que foi executado. Para repetir um procedimento é só executar novamente o script. Isso incrementa muito a reprodutibilidade do nosso procedimento,​ uma qualidade muito importante para a ciência de um modo geral, mas também para o dia a dia. Por isso, a partir desse momento no curso, iremos ​abondonar ​a interface do R online que estavamos ​usando para rodar o código e vamos, a patir de agora, produzir script ​ou códigos!+Quando trabalhamos em uma planilha eletrônica,​ a partir de dados brutos, podemos salvar os gráficos ou os dados modificados após manipulados. Entretanto, o procedimento não é salvo. Se precisar fazer o mesmo procedimento para outro conjunto de dados precisará lembrar todas as etapas e a ordem em que foram executadas. Em programação,​ o script é nosso roteiro do procedimento que foi executado. Para repetir um procedimento é só executar novamente o script. Isso incrementa muito a reprodutibilidade do nosso procedimento,​ uma qualidade muito importante para a ciência de um modo geral. Por isso, deste ponto do curso em diante, iremos ​abandonar ​a interface do R online que estávamos ​usando ​até então ​para trabalhar através ​de scripts ​ou códigos!
  
 </​WRAP>​ </​WRAP>​
Linha 634: Linha 636:
 Um editor de código nada mais é do que um editor de texto puro como o bloco de notas do Windows. Algumas funcionalidades são bem vindas, como por exemplo, enviar a linha de código diretamente para o console do R sem a necessidade de copiar e colar. ​ Um editor de código nada mais é do que um editor de texto puro como o bloco de notas do Windows. Algumas funcionalidades são bem vindas, como por exemplo, enviar a linha de código diretamente para o console do R sem a necessidade de copiar e colar. ​
  
-A instalação básica do R contém uma interface gráfica de usuário (R-GUI) simples, tanto no Windows como no IOS, que acompanha um editor de códigos.+A instalação básica do R contém uma interface gráfica de usuário (R-GUI) simples, tanto no Windows como no IOS/Mac, que acompanha um editor de códigos.
  
 <WRAP center round box 80%> <WRAP center round box 80%>
  
-O editor de códigos do R-GUI  no Windows ​e no Mac é bastante simples e costuma ser uma boa opção ​inicial ​para usuários ​deste sistema. Para esta disciplina ​ele é suficiente. ​+O editor de códigos do R-GUI no Windows ​ou Mac é bastante simples e costuma ser uma boa opção para usuários ​iniciantes do R. Para esta disciplina ​esse editor ​é suficiente. ​
  
-No Linux não uma há uma [[http://​en.wikipedia.org/​wiki/​GUI|GUI]] padrão para o R, e esta escolha deve ser feita logo no início. ​+No Linux não há uma [[http://​en.wikipedia.org/​wiki/​GUI|GUI]] padrão para o R, e esta escolha deve ser feita logo no início. ​
  
 Na página de material de apoio há uma seção com várias [[http://​ecologia.ib.usp.br/​bie5782/​doku.php?​id=01_curso_atual:​material:​start#​interfaces_para_o_r|dicas sobre interfaces para o R]] para lhe ajudar. Na página de material de apoio há uma seção com várias [[http://​ecologia.ib.usp.br/​bie5782/​doku.php?​id=01_curso_atual:​material:​start#​interfaces_para_o_r|dicas sobre interfaces para o R]] para lhe ajudar.
Linha 665: Linha 667:
   - a janela na parte inferior é o console do R, ou seja o programa propriamente dito. Essa janela recebe os comandos de código e envia ao interpretador do R, que por sua vez, retorna o resultado final do processamento((quando a tarefa solicitada é a representação de um gráfico, uma nova janela é aberta, um dispositivo gráfico. )).    - a janela na parte inferior é o console do R, ou seja o programa propriamente dito. Essa janela recebe os comandos de código e envia ao interpretador do R, que por sua vez, retorna o resultado final do processamento((quando a tarefa solicitada é a representação de um gráfico, uma nova janela é aberta, um dispositivo gráfico. )). 
  
-Para evitar confusão e perda de trabalho é importante digitar as informações que serão transmitidas ao R (linhas de código) no arquivo texto e ir passando ​esses comandos ao R. Uma boa prática também é comentar as linhas de código para que outras pessoas, ou mesmo a pessoa que criou o código, possam entender ou lembrar o que código executa.+Para evitar confusão e perda de trabalho é importante digitar as informações que serão transmitidas ao R (linhas de código) no arquivo texto e ir enviando ​esses comandos ao console ​R. Uma boa prática também é comentar as linhas de código para que outras pessoas, ou mesmo a pessoa que criou o código, possam entender ou lembrar o que cada parte ou linha do código executa.
  
-É imprescindível aprender a se organizar dentro ​da lógica ​do ambiente de programação, ​com o risco de perder trabalho ou ficar completamente ​perdido entre as tarefas ​que executa.+É imprescindível aprender a se organizar dentro do ambiente de programação, ​para evitar ​o risco de perder trabalho ou ficar perdido entre as tarefas ​executadas.
   ​   ​
 </​WRAP>​ </​WRAP>​
  
 ==== O primeiro Script ==== ==== O primeiro Script ====
 +
 +O exercício final deste tutorial é produzir um script que você terá de salvar e submeter para avaliação. Assim, siga atentamente as instruções nos pontos abaixo. ​
  
  
Linha 704: Linha 708:
   * Retire a redundância na atribuição dos abjetos, mas cuidado com objetos que são sobrescritos,​ veja o ''​copa70'',​ por exemplo;  ​   * Retire a redundância na atribuição dos abjetos, mas cuidado com objetos que são sobrescritos,​ veja o ''​copa70'',​ por exemplo;  ​
   * Ao final selecione todas as linhas do script, inclusive comentários e e tecle ''​Ctrl-r''​ para submeter tudo ao interpretador do R;   * Ao final selecione todas as linhas do script, inclusive comentários e e tecle ''​Ctrl-r''​ para submeter tudo ao interpretador do R;
-  * Garanta que não há mesagens ​de erro ao longo do processamento do script.+  * Garanta que não há mensagens ​de erro ao longo do processamento do script.
  
 <WRAP center round box 80%> <WRAP center round box 80%>
Linha 714: Linha 718:
 **__Comentários no código__** **__Comentários no código__**
  
-Para fazer comentários no código, usamos o simbolo ​de ''​ # ''​.  +Para fazer comentários no código, usamos o símbolo ​de ''#''​.  
-Qualquer conteúdo na linha de comando depois do  ''​ # ''​ não é interpretado pelo R. Utilizamos os comentários,​ em geral, para tornar o código autoexplicativo. ​+Qualquer conteúdo na linha de comando depois do  ''#''​ não é interpretado pelo R. Utilizamos os comentários,​ em geral, para tornar o código autoexplicativo. ​
  
 </​WRAP>​ </​WRAP>​
Linha 723: Linha 727:
   * Salve o //script// com estas modificações. ​   * Salve o //script// com estas modificações. ​
  
-Agora vamos submeter o //script// salvo no nosso sistema de correção automática de código, chamado **notaR**. +Você terá que submeter o //script// salvo no nosso sistema de correção automática de código, chamado **notaR**. ​Portanto, que o arquivo foi salvo corretamente.
- +
- +
-{{url>​http://​www.lage.ib.usp.br/​notar/​exercicio.php?​exerc=88}}+
  
 <WRAP center round todo 80%> <WRAP center round todo 80%>
-Agora que já fez seu primeiro exercício no notaR. ​Siga para a aba de [[01_curso_atual:​exercicios1|exercícios]] para seguir os execícios ​desse tópico. Os exercícios ficarão embutidos nesse wiki, mas deixaremos sempre o link para o notaR caso prefiram abrir a plataforma diretamente. **Lembre-se de logar no sitema ​notaR** antes de fazer os exercícios e não deixe de passar pela aba da apostila, ela complementar aos [[03_apostila:​01-intro|tutoriais]],​ apesar de alguma redundância desejável.+Siga para a aba de [[01_curso_atual:​exercicios1|exercícios]] para seguir os exercícios ​desse tópico. Os exercícios ficarão embutidos nesse wiki, mas deixaremos sempre o link para o notaR caso prefiram abrir a plataforma diretamente. **Lembre-se de logar no sistema ​notaR** antes de fazer os exercícios e não deixe de passar pela aba da apostila, ​pois ela é complementar aos [[03_apostila:​01-intro|tutoriais]],​ apesar de possuir ​alguma redundância desejável ​para melhor fixar o conteúdo das atividades.
  
 </​WRAP>​ </​WRAP>​
02_tutoriais/tutorial1/start.1614091018.txt.gz · Última modificação: 2021/02/23 11:36 por adalardo