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
Próxima revisão Ambos lados da revisão seguinte
02_tutoriais:tutorial1:start [2021/02/23 11:38]
adalardo [Classe dos objetos]
02_tutoriais:tutorial1:start [2023/08/11 18:53]
127.0.0.1 edição externa
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 ​=====
  
  
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>​
Linha 704: Linha 706:
   * 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 716:
 **__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. ​
  
Linha 723: Linha 725:
   * 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 e 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, ela e complementar aos [[03_apostila:​01-intro|tutoriais]],​ apesar de alguma redundância desejável.
  
 </​WRAP>​ </​WRAP>​
02_tutoriais/tutorial1/start.txt · Última modificação: 2023/08/11 19:08 (edição externa)