A lógica de programação é um dos tópicos mais importantes para o aprendizado de qualquer linguagem de programação. Em nosso dia-a-dia, todas nossas ações são baseadas em tomadas de decisões lógicas, mesmo que aconteçam em microsegundos.
Por exemplo:
Você chega na sua casa, à noite, após um dia de trabalho e você quer encontrar o controle remoto da sua televisão em seu quarto. Para isso, você precisa tomar algumas decisões. A primeira delas é acender a luz. Em seguida, você irá localizar o controle. Por fim, você irá ligar a televisão.
Na programação, as coisas não são diferentes. Todas as ações são baseadas em um raciocínio lógico previamente definido. Assim, a lógica de programação tem como objetivo a busca da melhor solução para um determinado problema.
Em programação, para encontrar a melhor solução, sempre iremos constrastar duas características: Performance X Segurança.
Vamos supor que a tarefa a ser executada seja atravessar a rua. Você pode executar essa tarefa de inúmeras maneiras. Você pode partir do ponto “A” e chegar no ponto “B” simplesmente atravessando a rua em qualquer lugar. Seu objetivo terá sido alcançado. Contudo, você também pode atingir o ponto “B” travessando a rua na faixa de pedestres, quando o sinal estiver fechado para os carros.
Na situação acima, em ambos os casos o objetivo final foi alcançado. Contudo, a razão entre performance/segurança em cada um deles é bem distinta. Em programação, iremos constantemente avaliar as situações em função dessa razão. Em alguns casos, a performance é mais desejada do que a segurança. Porém, em outros casos, a segurança deve ser considerada em primeiro lugar, independentemente de perdermos um pouco em performance.
A lógica de programação também é responsável por ensinar tudo aquilo que podemos fazer com qualquer linguagem de programação. Ou seja, ela aborda o cerne da programação, os processos comuns às várias linguagens existentes. No estudo da lógica, os comandos e especificidades de cada linguagem não são abordados.
Com a ausência da lógica, tarefas simples podem se tornar em tarefas de execução extremamente complicada. Utilizando um exemplo extrapolado, a ausência da lógica poderia levar à construção de uma casa partindo do teto e construindo o alicerce em torno do mesmo. Você irá atingir o objetivo final. Contudo, o tempo e recursos gastos para isso, provavelmente será inifinitamente maior do que se a lógica fosse aplicada.
As ferramentas utilizadas para a aplicação da lógica na programação são os algoritmos.
O que é um algoritmo?
Um algoritmo pode ser considerado como um passo a passo para a tomada de decisões para que um problema seja resolvido.
Ou seja, o algoritmo é NÃO é a solução para o programa, mas SIM a sequência de ações (o caminho) para que o problema seja resolvido.
Uma analogia constantemente utilizada para se explicar o que é um algoritmo é compara-lo com uma receita de bolo. Na verdade, a receita de bolo por si só já é um algoritmo, é uma sequência de tomada de decisões que resultará em um produto final.
Figura 1: Receita bolo de cenoura.
Caso você altere alguma das etapas descritas na receita, seu bolo pode não sair como o esperado. Caso você esqueça ou ignore a informação de adicionar fermento, seu bolo não irá crescer. Caso você substitua as cenouras por achocolatado, você poderá obter um bolo no final. Contudo, não será mais um bolo de cenoura.
Apesar de ser algo engraçado, esses exemplos aplicam-se diretamente à preparação de algoritmos para a execução de tarefas computacionais. Os programas de computador são basicamente algoritmos escritos em uma linguagem específica para a execução de uma função ou um grupo de funções.
Para a criação de um programa, a pessoa responsável pelo seu delineamento deve pensar em duas etapas:
É nessa etapa que a lógica tem a maior contribuição. Nesse momento defini-se o que deve ser feito, qual o objetivo final deste programa. Além disso, nesse momento todo o planejamento é determinado. As etapas de execução são estipuladas e os resultados intermediários são previstos.
É nessa etapa que a programação acontece. Nesse momento ocorre a tomada a decisão de qual liguagem utilizar e com todo o planejamento previsto, as ferramentas específicas de cada linguagem que serão utilizadas para alcançar o resultado.
Você tem como objetivo calcular a nota média de um aluno em duas avaliações e classifica-lo como aprovado ou reprovado baseado em uma nota média mínima de 7. Como a lógica de programação deve ser aplicada nesse caso?
O que deve ser feito?
Podemos organizar o nosso algoritmo de diferentes maneiras.
Uma delas é utilizar a forma narrativa:
O objetivo desse algoritmo é obter a nota média de um aluno baseado nas notas de duas avaliações. Primeiramente iremos identificar a nota da primeira avaliação. Em seguida, a nota da segunda avaliação será identicada. Após estas etapas, as duas notas serão somadas e divididas por 2. Ao término dessa etapa, a nota média será obtida. Caso a nota seja superior a 7, o aluno será aprovado. Caso contrário, ele será reprovado.
Ou seja, o algoritmo seria:
Identifique a primeira do aluno
Identifique a segunda nota
Some as duas notas e divida por 2
Verifique se a média é maior que 7
Se a média for maior que 7, o aluno é aprovado
Caso contrário, o aluno é reprovado
Também podemos utilizar uma forma de fluxograma:
Figura 2: O fluxograma é uma boa forma de representação gráfica de simplificada do algoritmo utlizado.
Ou até mesmo na forma de pseudocódigo (também conhecido como linguagem estruturada):
algoritmo “média do aluno”
início
Informe a primeira nota do aluno
salve em Nota1
Informe a segunda nota do aluno
salve em Nota2
média<-Nota1+Nota2/2
Se média>=7
print “aluno aprovado”
Senão
print “aluno reprovado”
O Pseudocódigo é a forma mais próxima de representação de um algoritmo em uma linguagem de programação. No pseudocódigo não nos importamos com funções e/ou comandos específicos de uma linguagem. Porém, especifícamos os passos a serem tomados de uma meneira mais estruturada, que pode ser facilmente aplicada em uma liguagem específica.
Por exemplo, utilizando o R o algoritmo desrito acima ficaria representado da seguinte forma, no caso do aluno ter recebido 7 na primeira prova e 9 na segunda prova
# Aqui definimos os valores das provas 1 e 2, respectivamente.
Nota1<-7
Nota2<-9
# Nesse momento, a média é calculada.
Media<-(Nota1+Nota2)/2
# Nesta etapa, é executa uma análise condicional que comparará a média com o nosso valor mínimo para a aprovação e informará o resultado final (Aprovado ou reprovado)
if(Media>=7){
print("O aluno está aprovado")
} else{
print("O aluno está reprovado")
}
## [1] "O aluno está aprovado"
O primeiro box representa o código utilizado no R para a execução do algoritmo. No segundo código vemos a resposta (o resultado) da execução do algoritmo. Durante o curso voltaremos nesse exemplo e cada etapa será explicada. Portanto, no momento, não preocupe-se em entender o que cada comando significa. Busque entender a lógica por trás dos comandos baseando-se nos exemplos de algoritmos explicados acima. Existem várias formas de se executar a mesma tarefa em todas as linguagens de programação. No R, não é diferente. Assim, iremos explorar um pouco mais as possibilidades de execução desta mesma tarefa nas próximas aulas.
Uma outra característica muito importante para a criação de algoritmos que sejam funcionais e de utilização universal, ou seja, são executáveis em qualquer situação e por qualquer pessoa que não tenha participado da criação do mesmo, é um ótima organização do código. A organização do código passa pela utilização de duas ferramentas ao longo da escrita do código: Os comentários e a identação. Essas duas ferramentas serão trabalhadas ao longo do execução dos algoritmos que iremos utilizar ao longo do curso.
Os comentários não são nada mais do que informações adicionais que são deixadas na forma estruturada do algoritmo de maneira a explicar o que cada pedaço (chunck) de código é responsável por fazer. No R, para que um texto não seja interpretado como código a ser executado, ele deve ser inserido posteriormente ao simbolo “#”. Por exemplo:
#O seguinte comendo irá calcular a média de dois números
media<-5+7/2
media
## [1] 8.5
A utilização de comentários deixa o seu código mais compreensível para outras pessoas e até mesmo para você. Quando trabalhamos com longos algoritmos, os comentários nos auxiliam a nos localizarmos e aumentam nossa produtividade.
A identação é um recurso que para muitas linguagens de programação é essencial. No caso do R, a identação não é tão crucial para que o código seja executado. Ou seja, mesmo mal identado, o código será funcional. Contudo, a identação facilita de maneira muito grande a organização e entendimento do código. A identação não é nada mais do que a utlização de espaços e tabulações para a alinhamento correto dos códigos inseridos no algoritmo.
Por exemplo, o código apresentado anteriormente, ficaria da seguinte forma de maneira não identada
Nota1<-7
Nota2<-9
Media<-(Nota1+Nota2)/2
if(Media>=7){
print("O aluno está aprovado")
} else{
print("O aluno está reprovado")
}
É possível notar que dentro da função if fica difícil identificar onde começa e termina cada comando.
Desta forma, o código identado pode auxiliar nessa identificação
Nota1<-7
Nota2<-9
Media<-(Nota1+Nota2)/2
if(Media>=7){
print("O aluno está aprovado")
} else{
print("O aluno está reprovado")
}
Esse foi um exemplo simples e sútil. Contudo, trabalhando com longos códidos e estruturas de repetição e checagem complexas (como if, for, while), que serão vistas no curso, a identação pode ser de grande ajuda.
O aprendizado de qualquer linguagem de programação está diretamente envolvido com a utilização frequente e treinamento. O aprendizado de uma linguagem de programação pode ser comparado ao aprendizado de uma novo idioma. Você precisa aprender pequenos fragmentos do idioma (palavras) para posteriormente poder formar estruturas mais complexas (frases). Contudo, mesmo aprendendo palavras o suficiente para formar frases, você precisa seguir algumas regras para que a comunicação ocorra de maneira correta e eficiente (gramática e ortografia). Além disso, uma vez aprendido, é necessário treinar a escrita e conversação para aprimorar e não esquecer o conteudo aprendido. A linguagem de programação é a forma com que o usuário se comunica com o computador e repassa ordens para execução de atividades. Assim como as palavras em um idioma, a linguagem de programação possuí os comandos específicos. O agrupamento de comandos em estruturas mais complexas irão formar os chamados algoritmos (ou scripts, rotinas, etc.), Porém, para que o algoritmo seja funcional, dependemos da nossa versão da gramática e ortografia. Isso ficará por conta da especificidade de utilização de cada função, da identação e das regras de sintaxe da linguagem.
Organize suas ideias antes de iniciar a escrita de qualquer código.
No início, escrever a ideia em um papel com o passo a passo das análises ajuda muito.
Tente compartimentalizar seus códigos em blocos de funções. Isso pode auxiliar tanto na organização do código quanto no entendimento posterior.
Comente todos os pontos cruciais dos seus códigos.
Tente não utilizar nomes genéricos para as variáveis que você está criando. Por exemplo, “a”, “b”, “var1”, etc.
Também evite nomes de varáveis muito longos.
Não utlize acentos, nem caracteres especiais nos nomes de suas variáveis (exceto “_" ou “-”).
Se em algum momento seu código não funcionar (compilar) mesmo que para você tudo pareça correto, mantenha a calma e analise cada função dentro do seu código com bastante calma. Muitas vezes uma letra maiúscula no lugar de uma minúscula no nome de uma variável pode inviabilizar toda uma rotina. Até você se adaptar com todos os tipos de mensagens de erro, a análise minuciosa do código por auxiliar bastante.
Trate seu algoritmo como se ele fosse ser utilizado para sempre. O que você aprendeu construindo uma determinada rotina, pode ser utilizada em inúmeras outras. Portanto, cuide bem da organização e identificação do seu algoritmo.
Salve seu algoritmo com um nome que possa ser facilmente identificado no futuro. De preferencia, crie uma lista que enumere seus algoritmos e funções. Desta forma, mesmo sem trabalhar por longos períodos com o mesmo, você facilmente o encontrará.
O R é uma poderosa ferramenta de análise estatística. Ao mesmo tempo, o R é o ambiente (software) utilizado para execução de rotinas estatísticas e uma linguagem de programação. Mas como assim?
O R possui o ambiente para a execução dos scripts criados, assim como visualização dos resultados dos comandos e dos gráficos gerados. Esse ambiente está presente na versão “clássica” obtida por meio do processo de instalação que veremos a seguir, ou então, presente em algumas das alternativas de interface gráfica. A mais famosa dessas alternativas é o R Studio.
O R foi criado na Nova Zelândia (Auckland), no ano de 1992. Ele foi o resultado de uma colaboração iniciada por pois pesquisadores: Ross Ihaka e Robert Gentleman. A linguagem de programação implementada no R foi derivada de uma linguagem previamente existente, a linguagem S. O nome R foi criado à partir de uma brincadeira entre a primeira letra dos dois criadores, e com o nome da linguagem utilizada para a criação (Linguagem S). A linguagem S e a linguagem R possuem diferenças significativas entre elas. Contudo, uma série de códigos implementados na linguagem S estão presentes de maneira identica na linguagem R. O código fonte do R é livre. Ou seja, qualquer pessoa pode alterar e criar versões do software, a partir de certos pré-requisitos. Atualmente o R é mantido, atualizado e administrado pelo R Development Core Team.
A publicação original do R é de 1995. Contudo, a versão beta estável foi lançada somente em 2000.
Figura 1: Publicação original do R. A publicação original foi publicada em 1995 no Journal of Computational and Graphical Statistics. Disponível em: http://www.tandfonline.com/doi/abs/10.1080/10618600.1996.10474713
Primeiramente, pelo fato do R ser um software aberto e bastante popular, ele chamou a atenção da comunidade científica ao longo dos anos. Com isso, criou-se uma gigantesca comunidade que gera conteúdo para a utilização no software. Esse conteúdo está disponível em diversas forma, desde dicas para implementação de funções básicas, resolução de dúvidas, discussão de problemas, até a criação de pacotes. Os pacotes talvez sejam o grande diferencial do R. Existem milhares de pacotes distintos que podem ser instalados no R e executarão rotinas e comandos específicos para um determinado tipo de análise. Estes pacotes são criados pela própria comunidade científica que utiliza o R e disponibilizados de maneira gratuíta. Nós iremos explorar as capacidades de alguns pacotes ao longo do curso e teremos um momento somente para apresentação de pacotes interesantes. Além da grande versatilidade de funções, o R é capaz de gerar uma variedade de gráficos de alta qualidade e poder de representatividade, o que pode resular em um aumento considerável da qualidade dos resultados apresentados em publicações.
Uma característica muito importante e vantajosa do R, que em primeiro momento pode não ser evidente, é a sua utilização amigável e a reprodutibilidade do código. Em um primeiro momento, softwares point-and-click, como o SPSS, podem parecer mais amigáveis. Contudo, a execução de uma extensa rotina de análise pode ser muito mais complicada de ser repassada e reproduzida por outros usuários nesse sistema. No caso do R, uma vez adaptado à linguagem de programação, é possível notar que a utilização é bastante intuitíva. Além disso, toda uma rotina extremamente complexa pode ser organizada em um script que pode ser executado por uma pessoa que não participou da criação do mesmo de maneira muito simples, diferentemente da utilização de uma rotina point-and-click.
Informações sobre história, lançamento de novas versões, atualizações, manuais, dúvidas frequentes, assim como os links para download do R estão disponíveis em:
Acessando o link acima, é possível identificar no canto superior esquerdo a opção Download e um hiperlink logo abaixo com a escrita CRAN (Figura 2a, retangulo vermelho). CRAN é a abreviação de Comprehensive R Archive Network. Esse é o sistema de servidores utilizados para armazenar as informações relacionadas ao R (softwares, pacotes, etc.).
Clicando em CRAN, você será direcionado para uma página onde estarão listados todos os servidores disponíveis, separados por país (Figura 2b).
É possível notar que para o Brasil existem servidores alocados nos estados da Bahia, Paraná, Rio de Janeiro e São Paulo (Figura 2c). Nesse momento, é interessante selecionar o servidor mais próximo de você. Você pode realizar o Download a partir de qualquer servidor. Contudo, a seleção de servidores próximos diminuirá problemas com a conexão.
Uma vez selecionado um dos servidores, você será direcionado a uma nova página, contendo os links para os executáveis do R para diferentes sistemas operacionais (OS). Nesse curso, focaremos an instalação para o Windows (caso alguém queira instalar o R em outro OS, estarei disponível para tirar dúvidas). Clique no link correspondente ao Windows (seta vermelha na Figura 2d).
Nesta nova página, serão apresentadas algumas opções de links para download de arquivos relacionados ao R. Nesse momento, devemos fazer o download do arquivo binário base para instalação do R. Clique na opção “install R for the first time” (Figura 2e).
Na nova página aberta, clique na opção “Download R 3.4.1 for Windows” (Figura 2f). Uma nova janela será aberta para que o executável seja salvo no computador.
Os servidores do CRAN são chamados de mirrors (espelhos). Portanto, em todo processo que o R requisitar a seleção de um mirror, ele estará solicitando a seleção de um dos servidores.
Figura 2: Passo a passo para download do arquivo executável para instalação do R.
Após baixar o executável, clique no arquivo para iniciar a instalação. A janela apresentada na figura 3 será aberta. Siga clicando em next até o termino das opções para realizar a instalação seguindo as recomendações default do programa.
Figura 3: Janela de início do processo de instalação do R.
IMPORTANTE
Após o término da instalação do software, no caso do seu computador ser de 64 bits, dois ícones estarão disponíveis em sua área de trabalho. Esses ícones são correspondentes a duas versões do R. Uma de 64 bits (R x64) e uma de 32 bits (R i386). No caso dos computadores de 32 bits, somente a versão de 32 bits será instalada. No caso do seu computador ter instalado as duas verões, opte sempre por executar o ícone de 64 bits. A versão de 64 bits irá te possibilitar a utilização de mais memória, dessa forma, aumentando a performance do sofware. Contudo, devemos manter as duas versões devido ao fato de que alguns pacotes só estão disponíveis para a versão de 32 bits.
Figura 4: Ícones disponíveis após a instalação em um computador de 64 bits.
O R studio é uma ferramenta desenvolvida para tornar a interface gráfica do R ainda mais amigável. Em nosso curso, iremos trabalhar tanto com a versão clássica da interface gráfica do R, quanto com o R studio. Contudo, o nosso maior foco será na utilização do R Studio, uma vez que organização, a facilidade de utilização, assim como o número de funcionalidades é bem maior com essa ferramenta.
Para instalar o R Studio, acesse o link abaixo:
A instalação do R studio é bem simples. Primeiro, você deverá baixar o executável presente no link descrito acima (Figura 5a). Em seguida, siga clicando em next até o término da instalação (Figura 5b). Caso o seu computador seja de 64 bits e durante a instalação do R, as duas versões foram instaladas, o R Studio utilizará a versão de 64 bits como default.
Figura 5: Ícones disponíveis após a instalação em um computador 64 bits.
IMPORTANTE
O R Studio deve ser instalado após a instalação do R, pois o R studio depende da presença do R para conserguir finalizar o processo de instalação.
A versão clássica do R é denominada R base. Para inicia-la, dê um clique duplo no ícone criado em sua área de trabalho (caso você possua a versão de 64 bits, inicie ela, R x64). Nesse momento, será aberta a janela apresentada na Figura 6.
Figura 6: Interface gráfica de trabalho do R (RGui).
No momento de execução do software, somente a figura 6a estará aberta. Essa janela é denominada de console. Nela somos capazes de executar comandos e visualizar todos os outputs (de origem não gráfica).
A figura 6b apresenta uma janela muito interessante de ser usada durante a utilização do R. Essa janela é chamada de script. Nessa janela podemos escrever e editar nossos algoritmos e funções sem que os mesmos necessitem ser refeitos a cada execução. No caso da execução de funções no console, o comando utilizado dá lugar ao output do mesmo. Dessa forma, é necessário redigitar o comando caso você queira roda-lo novamente (existe uma solução para comandos mais simples). Porém, utilizando a janela de script, você é capaz de enviar o comando para o console e continuar com o comando digitado em uma janela independente.
No caso de outputs gráficos (figuras ou gráficos), quando um comando que irá criar um desses outputs é executado, uma nova janela é aberta (Figura 6c). Essa janela é chamada de R Graphics. Nela podemos visualizar nossos outputs gráficos, assim como exporta-los para nosso computador.
OBS: Estas janelas serão vistas com mais detalhes durante a aula. Existem muito mais funções disponíveis.
O R Studio é uma excelente alternativa para a interface gráfica clássica do R. No R studio, todas as janelas são integradas em uma única interface, como mostrado na Figura 7. Além disso, Existem uma série de funcionalidades que facilitam a organização e escrita de códigos. Por exemplo, no R studio, todos os comandos possuem um tipo de cor específica (azul para comandos, verde para comentários, etc.).
A interface do R studio é dividida em quatro janelas:
1- Script: Nesta janela são exibidos todos os scripts criados. Os vários scripts são organizados em abas e podem ser analisados simultaneamente. Assim como no R Gui, os comandos do script podem ser enviados para o console, onde o output é apresentado (Figura 7a).
2- Console: Assim como no R Gui, o console é o local onde o output (resultado do comando ou mensagens de erro) é apresentado (Figura 7b).
3- History e Environment: A figura 7c apresenta a janela onde é possível observar duas abas: Enrionment e History. No Environment é possível identificar todos os objetos criados durante seus comando no R. Isso traz um dinamismo muito grande nas análises, uma vez que no R Gui, os objetos devem ser checados manualmente. No History é possível identificar o históricos de todos os comandos executados na análise. Desta forma, caso você mude algo no script e precise voltar em uma versão anterior, você identificará o momento em que o comando foi executado da meneira correta no History.
4- Opções de visualização: A Figura 7d apresenta uma janela do Rstudio que possui algumas abas interessantes para a visualização de dados. Na aba Files você é capaz de visualizar seu sistema de pastas e arquivos presentes no computador. Desta forma, facilitando a identificação de arquivos de interesse. A aba Plots é responsável por apresentar todos os outputs gráficos gerados por comandos no R. Nela você consegue navegar entre os vários gráficos criar, exportar e modificar os gráficos gerados. A aba Packages permite visualizar os pacotes instalados, assim como carrega-los e instalar novos pacotes. A aba Help irá apresentar o resultado dos comandos de ajuda executados no R. Nessa aba você consegue acessar os manuais e explicações sobre pacotes e comandos. Por último, temos a aba Viewer que de maneira semelhante à aba Plots também apresenta recursos gráficos. Contudo, ele é ativa em algumas situações específicas, como no momento de acessar recursos por meio de urls de páginas na internet.
Figura 7: Interface gráfica de trabalho do R studio.
Este tópico foi intencionalmente adicionado no início do curso, mesmo que de uma maneira contra-intuitíva. Geralmente, a opção de onde obter ajuda é apresentada após a introdução a algum conteúdo. Contudo, na minha opinião, o R possui uma peculiaridade extremamente importante que faz com que esse tópico seja capaz de ser posicionado no início do curso sem nenhuma estranheza.
Essa peculiaridade trata-se da comunidade utilizadora do R. O R é utilizado por milhões de pessoas ao redor do mundo. Pessoas de diferentes áreas, com diferentes objetivos, mas que usam uma ferramenta em comum. Desta forma, ao longo dos anos foram sendo criadas inúmeras comunidades específicas para apresentação de dúvidas, discussão de problemas e aprendizado do R. Além disso, essa mesma comunidade também adentrou-se em ferramentas já existentes para discussão de dúvidas recorrentes em outras linguagens de programação.
Desta forma, existe uma infinidade de discussões já realizadas sobre dúvidas de execução de comandos, resolução de problemas obtidos com rotinas, utilização de pacotes já existentes, discussão sobre bugs, etc. Portanto, acessando algumas das ferramentas abaixo, você conseguirá obter ajuda para a grande maioria dos seus problemas.
Contudo, a maior sugestão de todas, por mais simples que pareça, é: UTILIZE O GOOGLE. Na grande maioria das vezes, simplesmente copiar e colar a mensagem de erro informada pelo R na ferramenta de busca do google já irá apresentar uma série de fóruns de dicussões que irão apresentar diferentes maneiras de solucionar o problema. Além dos erros, caso você queria aprender a executar uma função, como por exemplo, criar uma tabela. A simples busca de como criar uma tabela no R irá retornar da mesma forma uma série de fóruns apresentando as diferentes formas.
As duas últimas dicas para potencializar a sua capacidade de encontar a solução para os seus problemas no R são: Quando for fazer as buscas no Google sobre um problema no R, tente buscar o problema utilizando o Inglês e utilizando a terminologia específica do R. Por exemplo, no caso de como criar uma tabela no R, busque por “How to create a data frame in R?”. Existem vários fóruns de discussão em Português, porém, o número de fóruns em Inglês é infinitamente maior. Com isso, suas changes de encontrar a solução para sua dúvida serão potencializadas. No caso da terminologia, as tabelas dentro do R são denominadas Data Frames. Com isso, sua busca ficará ainda mais específica. Com o tempo, você ficará cada vez mais adaptado à terminologia e encontrará a resposta para as suas dúvidas cada vez mais rápido.
R-bloggers
O R-bloggers foi originalmente concebido como blog para agregar conteudo sobre o R. Atualmente você consegue encontrar inúmeras dicas sobre funções básicas, pacotes específicos e resolução de problemas. É uma das maiores comunidades de informação sobre o R.
Cookbook for R
O Cookbook for R é um site que agrupa o conteúdo apresentado em livros com o mesmo nome. Nele você consegue encontrar excelentes tutoriais e exemplos para o aprendizado do uso básico do R.
Try R
O Try-R é uma ferramenta muito interessante que mistura um livro texto com um ambiente de programação. Nele você é capaz de encontrar informações sobre conteúdos específicos e descrições explicando o funcionamento de comandos, ao mesmo tempo em que você executa os códigos.
R - Dummies
O Dummies é uma série de livros voltados para o aprendizado básico de diversos conteúdos. O R é um dos conteúdos abordados nessa série de livros. Além dos livros, existe um site criado para apresentação de conteúdo voltado para o aprendizado básico dos tópicos abordados. No caso do R, vários conceitos básicos como navegação no R Gui, importação manipulação de dados, etc. são discutidos.
Stackoverflow
O Stack overflow é uma comunicade voltada para a discussão e resolução de problemas relacionados com programação em geral. Porém, é possível encontrar uma infinidade de discussões relacionadas ao R voltadas para a solução e discussão de problemas e dúvidas. É uma ferramenta muito útil e que deve ser utilizada constantemente por quem pretende trabalhar com o R (ou qualquer outra linguagem de programação) no dia-a-dia. É importante ressaltar que o site possue regras específicas de utilização e deve-se evitar apresentar dúvidas do tipo “faça para mim”. Ou seja, você pode fazer perguntas básicas, mas deve mostrar que não está buscando alguém para fazer o seu trabalho, mas sim para discutir e aprender.
r4stats
É um site voltado para o aprendizado do R. Possui uma série de aulas e exemplos voltados para o ensinamento de funções básicas.
Quick-R
O Quick-R também é um site voltado para o aprendizado do R. Ele apresenta uma séire de tutoriais, aulas e exemplos para o aprendizado do R de uma maneira bem organizada e intuitiva.
Git-Hub
O Git-Hub é uma comunidade online para a criaçãp/desenvolvimento de softwares em diversas plataformas. Nela você é capaz de encontrar vários scripts desenvolvidos para executar funções específicas no R, tirar dúvidas sobre questões mais complexas e disponibilizar os seus trabalhos para a comunidade interessada.
Bioconductor
O Bioconductor tem como objetivo disponibilizar ferramentas para analise de dados biológicos e analises de bioinformática. Além disso, no site você consegue encontrar informações sobre cursos, manuais e tutoriais.
R Graph Gallery
O R Graph Gallery é um site extremamente interessante para quem se interessa em aprofundar o conhecimento sobre a criação dos mais diversos tipos de gráficos no R. Ele apresenta explicações sobre os mais diversos tipos de gráficos, assim como exemplos e tutorias para a criação dos mesmos no R. Nós iremos voltar a este site no módulo que tratará da criação de gráficos no R.
R Documentation
O R Documentation é um buscador de conteudo. Nele, você consegue fazer buscas por palavras chaves que representem conteúdos relacionados ao R em diversas bases de dados (CRAN, Bioconductor, Github, etc.)
Redes sociais
Sim, a comunidade utilizadora do R também faz uso constante de redes sociais como Twitter e Facebook para discussões, apresentação de conteúdo e novidades. Busque encontrar grupos no Facebook, seguir perfis no Twitter. O Twitter especificamente é uma ferramenta muito boa para receber informações e novidades sobre o R. Existem vários perfis associados à divulgação de informações, tutoriais, curso e eventos relacionados ao R. Também utilize a hashtag #rstats para ficar por dentro de várias discussões realizadas no site. A comunidade do R no Google também pode ser muito útil (https://plus.google.com/communities/117681470673972651781).