Pular para o conteúdo principal
InicioBlogProgramação R

40 perguntas e respostas para entrevistas sobre programação em R para todos os níveis

Aprenda as 40 perguntas fundamentais da entrevista sobre programação em R e suas respostas para todos os níveis de senioridade: perguntas de nível básico, intermediário e avançado.
abr. de 2024  · 20 min leer

Estar bem preparado para uma entrevista sobre programação em R é um fator crucial para ter sucesso nela. Esse sucesso tem efetivamente dois lados: para um candidato a emprego, significa ser contratado pela empresa, enquanto para a própria empresa, significa encontrar a pessoa perfeita para seu cargo.

Para aumentar suas chances de sucesso em uma entrevista R, é sempre bom saber com antecedência quais são as possíveis perguntas que podem ser feitas se você estiver procurando emprego ou quais perguntas podem ser feitas a um candidato se você for um gerente de contratação ou um recrutador.

Este artigo discute 40 perguntas fundamentais de entrevista sobre programação em R e suas respostas para todos os níveis de senioridade, bem como algumas perguntas gerais de entrevista. Por conveniência, todas as perguntas técnicas são divididas em três níveis: perguntas de nível básico, intermediário e avançado.

Como recursos adicionais para a preparação de sua entrevista de programação em R, considere os seguintes recursos úteis:

Perguntas gerais da entrevista sobre programação em R

No início de uma entrevista com o R, o entrevistador pode fazer ao candidato algumas perguntas gerais e não técnicas sobre sua experiência geral com o R. Por exemplo:

  • Há quanto tempo você trabalha com o R?
  • Que tipo de tarefas você executa no R?
  • Como você estima seu nível de proficiência em R?

Se você está procurando emprego, deve pensar com antecedência sobre essas e outras perguntas semelhantes e preparar suas respostas. Não se preocupe se você ainda não tiver experiência real de trabalho em R: descrever seu estágio em programação em R ou seus projetos individuais ou em grupo em R que você concluiu durante seus estudos funciona muito bem.

Além disso, se você está sendo entrevistado para um cargo de nível básico, o entrevistador não espera necessariamente de você uma experiência de trabalho extensa (ou mesmo nenhuma) em R. Lembre-se de que, como você foi convidado para essa entrevista, a empresa achou seu currículo atraente de qualquer forma.

Perguntas da entrevista de nível básico sobre programação em R

Vamos começar com algumas das perguntas básicas da entrevista técnica de R que você poderá enfrentar de seu possível empregador. Para isso, é necessário que você tenha dominado os conceitos básicos e tenha alguma experiência prática no uso do R.

1. O que é R e quais são suas principais características?

O R é uma linguagem e um ambiente de programação amplamente usados para solucionar problemas de ciência de dados e especialmente projetados para computação estatística e visualização de dados. Suas principais características incluem:

  • Código aberto
  • Interpretado (ou seja, suporta programação funcional e orientada a objetos)
  • Altamente extensível devido à sua grande coleção de pacotes de ciência de dados
  • Funcional e flexível (os usuários podem definir suas próprias funções, bem como ajustar vários parâmetros das funções existentes)
  • Compatível com vários sistemas operacionais
  • Pode ser facilmente integrado a outras linguagens e estruturas de programação
  • Permite computação estatística avançada
  • Oferece uma variedade de ferramentas de visualização de dados para criar gráficos com qualidade de publicação
  • Equipado com a interface de linha de comando
  • Com o apoio de uma forte comunidade on-line

2. Quais são as desvantagens de usar o R?

  • Sintaxe não intuitiva e, portanto, uma curva de aprendizado acentuada, especialmente para iniciantes em programação
  • Relativamente lento
  • Uso ineficiente da memória
  • Documentação inconsistente e muitas vezes difícil de ler dos pacotes
  • Alguns pacotes são de baixa qualidade ou mal mantidos
  • Possíveis preocupações com a segurança devido à sua natureza de código aberto

3. Liste e defina alguns tipos de dados básicos no R.

  1. Números numérico-decimais.
  2. Números inteiros e inteiros.
  3. Caractere - umaletra, umnúmero ou um símbolo, ou qualquer combinação deles, entre aspas regulares ou simples.
  4. Categorias de fatoresde um conjunto predefinido de valores possíveis, geralmente com uma ordem intrínseca.
  5. Lógico -os valores booleanos TRUE e FALSE, representados sob o capô como 1 e 0, respectivamente.

4. Listar e definir algumas estruturas de dados básicas no R.

  1. Vetor - umaestrutura de dados unidimensional usada para armazenar valores do mesmo tipo de dados.
  2. Lista - umaestrutura de dados multidimensional usada para armazenar valores de qualquer tipo de dados e/ou outras estruturas de dados.
  3. Matriz - umaestrutura de dados bidimensional usada para armazenar valores do mesmo tipo de dados.
  4. Quadro de dados - umaestrutura de dados bidimensional usada para armazenar valores de qualquer tipo de dados, mas cada coluna deve armazenar valores do mesmo tipo de dados.

5. Como importar dados no R?

O R básico oferece funções essenciais para a importação de dados:

  • read.table()-a função mais geral do R básico para importação de dados, aceita dados tabulares com qualquer tipo de separador de campo, inclusive os específicos, como |.
  • read.csv()-arquivos de valores separados por vírgula (CSV) com . como separador decimal.
  • read.csv2()Arquivos de valores separados por sêmen e vírgula com , como separador decimal.
  • read.delim()-arquivos de valores separados por tabulação (TSV) com . como separador decimal.
  • read.delim2()-arquivos de valores separados por tabulação (TSV) com , como separador decimal.

Na prática, qualquer uma dessas funções pode ser usada para importar dados tabulares com qualquer tipo de campo e separadores decimais: usá-las para os formatos de arquivos especificados é apenas uma questão de convenção e configurações padrão. Por exemplo, aqui está a sintaxe da primeira função: read.table(file, header = FALSE, sep = "", dec = "."). As outras funções têm os mesmos parâmetros com configurações padrão diferentes que sempre podem ser explicitamente substituídas.

Os pacotes tidyverse readr e readxl fornecem algumas outras funções para importar formatos de arquivo específicos. Cada uma dessas funções pode ser ajustada ainda mais com a configuração de vários parâmetros opcionais.

leitor

  • read_tsv()-arquivos de valores separados por tabulação (TSV).
  • read_fwf()-Arquivos de largura fixa.
  • read_log()-Arquivos de registro da Web.
  • read_table(), read_csv(), read_csv2() e read_delim()- equivalentes às funções de base do R.

readxl

  • read_excel()-Arquivos do Excel.
  • read_csv()-equivalente à função das funções básicas do R.

Para se aprofundar no carregamento de dados no R, você pode consultar o tutorial How to Import Data Into R (Como importar dados para o R).

6. O que é um pacote no R e como você instala e carrega pacotes?

Um pacote R é uma coleção de funções, código, dados e documentação, representando uma extensão da linguagem de programação R e projetado para resolver tipos específicos de tarefas. O R vem com vários pacotes pré-instalados, e outros pacotes podem ser instalados pelos usuários a partir de repositórios. O repositório centralizado mais popular que armazena milhares de vários pacotes R é chamado de Comprehensive R Archive Network (CRAN).

Para instalar um pacote R diretamente do CRAN, precisamos passar o nome do pacote entre aspas para a função install.packages(), como segue: install.packages("package_name"). Para instalar mais de um pacote do CRAN de uma só vez, precisamos usar um vetor de caracteres que contenha os nomes dos pacotes entre aspas, como segue: install.packages(c("package_name_1", "package_name_2"). Para instalar um pacote R manualmente, primeiro precisamos fazer o download do pacote como um arquivo zip em nosso computador e, em seguida, executar o install.packages() function:

install.packages("path_to_the_locally_stored_zipped_package_file", repos=NULL, type="source")

Para carregar um pacote R instalado no ambiente de trabalho do R, podemos usar as funções library() ou require(). Cada um deles recebe o nome do pacote sem aspas e carrega o pacote, por exemplo, library(caret). No entanto, o comportamento dessas funções é diferente quando elas não conseguem encontrar o pacote necessário: library() lança um erro e interrompe a execução do programa, enquanto require() emite um aviso e continua a execução do programa.

7. Como criar um quadro de dados no R?

1. A partir de um ou mais vetores do mesmo comprimento, usando a função data.frame():

df <- data.frame(vector_1, vector_2)

2. A partir de uma matriz,usando a função data.frame():

df <- data.frame(my_matrix)

3. De uma lista de vetores do mesmo comprimento, usando a função data.frame():

df <- data.frame(list_of_vectors)

4. De outros quadros de dados:

  • Para combinar os quadros de dados horizontalmente(somente se os quadros de dados tiverem o mesmo número de linhas e os registros forem os mesmos e estiverem na mesma ordem) - usando a função cbind():
df <- cbind(df1, df2)
  • Para combinar os quadros de dados verticalmente(somente se eles tiverem um número igual de colunas com nomes idênticos do mesmo tipo de dados e que apareçam na mesma ordem) - usando a função rbind():
df <- rbind(df1, df2)

8. Como adicionar uma nova coluna a um quadro de dados no R?

  1. Usando o símbolo $:
df <- data.frame(col_1=10:13, col_2=c("a", "b", "c", "d"))
print(df)
​
df$col_3 <- c(5, 1, 18, 16)
print(df)

Saída:

  col_1 col_2
1    10     a
2    11     b
3    12     c
4    13     d
  col_1 col_2 col_3
1    10     a     5
2    11     b     1
3    12     c    18
4    13     d    16
  1. Usando colchetes:
df <- data.frame(col_1=10:13, col_2=c("a", "b", "c", "d"))
print(df)
​
df["col_3"] <- c(5, 1, 18, 16)
print(df)

Saída:

  col_1 col_2
1    10     a
2    11     b
3    12     c
4    13     d
  col_1 col_2 col_3
1    10     a     5
2    11     b     1
3    12     c    18
4    13     d    16
  1. Usando a função cbind():
df <- data.frame(col_1=10:13, col_2=c("a", "b", "c", "d"))
print(df)
​
df <- cbind(df, col_3=c(5, 1, 18, 16))
print(df)

Saída:

 col_1 col_2
1    10     a
2    11     b
3    12     c
4    13     d
  col_1 col_2 col_3
1    10     a     5
2    11     b     1
3    12     c    18
4    13     d    16

Em cada um dos três casos, podemos atribuir um único valor ou um vetor ou calcular a nova coluna com base nas colunas existentes desse quadro de dados ou de outros quadros de dados.

9. Como remover colunas de um quadro de dados no R?

1. Usando a função select() do pacote dplyr da coleção tidyverse. O nome de cada coluna a ser excluída é passado com um sinal de menos antes dele:

df <- select(df, -col_1, -col_3)

Se, em vez disso, tivermos muitas colunas para excluir, faz mais sentido manter o restante das colunas em vez de excluir as colunas de interesse. Nesse caso, a sintaxe é semelhante, mas os nomes das colunas a serem mantidas não são precedidos por um sinal de menos:

df <- select(df, col_2, col_4)

2. Usando a função subset() integrada da base R. Se precisarmos excluir apenas uma coluna, atribuímos ao parâmetro select da função o nome da coluna precedido de um sinal de menos. Para excluir mais de uma coluna, atribuímos a esse parâmetro um vetor que contém os nomes das colunas necessárias, precedidos de um sinal de menos:

df <- subset(df, select=-col_1)
df <- subset(df, select=-c(col_1, col_3))

Se, em vez disso, tivermos muitas colunas para excluir, faz mais sentido manter o restante das colunas em vez de excluir as colunas de interesse. Nesse caso, a sintaxe é semelhante, mas nenhum sinal de menos é adicionado:

df <- subset(df, select=col_2)
df <- subset(df, select=c(col_2, col_4))

10. O que é um fator no R?

Um fator no R é um tipo de dados específico que aceita categorias (também conhecidas como níveis) de um conjunto predefinido de valores possíveis. Essas categorias se parecem com caracteres, mas, na verdade, são armazenadas como números inteiros. Muitas vezes, essas categorias têm uma ordem intrínseca. Por exemplo, uma coluna em um quadro de dados que contenha as opções da escala Likert para avaliar pontos de vista ("concordo totalmente", "concordo", "concordo um pouco", "nem concordo nem discordo", "discordo um pouco", "discordo") deve ser do tipo fatorial para capturar essa ordem intrínseca e refleti-la adequadamente em gráficos de tipos categóricos. "discordo um pouco", "discordo", "discordo totalmente") deve ser do tipo fator para capturar essa ordem intrínseca e refleti-la adequadamente nos tipos categóricos de gráficos.

11. O que é o RStudio?

O RStudio é um IDE (ambiente de desenvolvimento integrado) de código aberto amplamente usado como um front-end gráfico para trabalhar com a linguagem de programação R a partir da versão 3.0.1. Ele tem muitos recursos úteis que o tornam muito popular entre os usuários do R:

  • Fácil de usar
  • Flexível
  • Multifuncional
  • Permite a criação de scripts reutilizáveis
  • Rastreia o histórico operacional
  • Autocompleta o código
  • Oferece ajuda detalhada e abrangente sobre qualquer objeto
  • Oferece acesso fácil a todos os dados importados e objetos criados
  • Facilita a alternância entre o terminal e o console
  • Permite a visualização do gráfico
  • Oferece suporte à criação e ao compartilhamento eficientes de projetos
  • Pode ser usado com outras linguagens de programação (Python, SQL, etc.)

Para saber mais sobre o que é o RStudio e como instalá-lo e começar a usá-lo, você pode seguir o Tutorial do RStudio.

12. O que é o R Markdown?

O R Markdown é um pacote R gratuito e de código aberto que fornece uma estrutura de autoria para a criação de projetos de ciência de dados. Com ele, podemos gravar um único arquivo .rmd que combina narrativa, código e gráficos de dados e, em seguida, renderizar esse arquivo em um formato de saída selecionado. As principais características do R Markdown são:

  • Os documentos resultantes são compartilháveis, totalmente reproduzíveis e com qualidade de publicação.
  • Uma ampla variedade de saídas e formatos estáticos e dinâmicos, como HTML, PDF, Microsoft Word, documentos interativos, painéis, relatórios, artigos, livros, apresentações, aplicativos, sites, modelos reutilizáveis, etc.
  • Fácil rastreamento de controle de versão.
  • Há suporte para várias linguagens de programação, incluindo R, Python e SQL.

13. Como criar uma função definida pelo usuário no R?

Para criar uma função definida pelo usuário no R, usamos a palavra-chave function e a seguinte sintaxe:

function_name <- function(parameters){
    function body 
}
  1. Nome da função -o nome do objeto de função que será usado para chamar a função após sua definição.
  2. Parâmetros da função -as variáveis separadas por vírgula e colocadas dentro dos parênteses que serão definidas como valores de argumentos reais sempre que chamarmos a função.
  3. Corpo da função - umtrecho de código entre colchetes que contém as operações a serem executadas em uma ordem predefinida nos argumentos de entrada sempre que chamarmos a função. Normalmente, o corpo da função contém a instrução (ou instruções) return() que retorna a saída da função ou a instrução (ou instruções) print() para imprimir a saída.

Um exemplo de uma função simples definida pelo usuário no R:

my_function <- function(x, y){
    return(x + y)
}

14. Liste alguns pacotes populares de visualização de dados em R.

  • ggplot2 - opacote de visualização de dados mais popular do R, que permite a criação de uma grande variedade de gráficos.
  • Lattice - paraexibir dados multivariados como um painel lado a lado (treliça) de vários gráficos.
  • Plotly - paracriar gráficos interativos e com qualidade de publicação.
  • highcharter: parafacilitar a plotagem dinâmica, oferece muitos recursos, plug-ins e temas flexíveis; permite a plotagem de diferentes objetos R com uma única função.
  • Folheto - paracriar mapas interativos.
  • ggvis - paracriar gráficos interativos e altamente personalizáveis que podem ser acessados em qualquer navegador usando a infraestrutura do Shiny.
  • patchwork - paracombinar várias parcelas, geralmente de vários tipos, no mesmo gráfico.

Perguntas da entrevista sobre programação R intermediária

Para profissionais mais experientes, é provável que o entrevistador faça algumas perguntas que exijam um conhecimento mais detalhado do R. Aqui estão algumas para as quais você deve se preparar:

15. Como atribuir um valor a uma variável no R?

  1. Usando o operador de atribuição <-, por exemplo, my_var <- 1—a maneira mais comum de atribuir um valor a uma variável no R.
  2. Usar o operador de igualdade =, por exemplo, my_var = 1- para atribuir valores a argumentos dentro de uma definição de função.
  3. Usando o operador de atribuição para a direita ->, por exemplo, my_var -> 1-pode ser usado em pipes.
  4. Usar os operadores de atribuição global, seja para a esquerda (<<-) ou para a direita (->>), por exemplo, my_var <<- 1- para criar uma variável global dentro de uma definição de função.

16. Quais são os requisitos para nomear variáveis no R?

  • Um nome de variável pode ser uma combinação de letras, dígitos, pontos e sublinhados. Ele não pode conter nenhum outro símbolo, inclusive espaços em branco.
  • O nome de uma variável deve começar com uma letra ou um ponto.
  • Se um nome de variável começar com um ponto, esse ponto não poderá ser seguido por um dígito.
  • As palavras reservadas no R (TRUE, for, NULL, etc.) não podem ser usadas como nomes de variáveis.
  • Os nomes das variáveis diferenciam maiúsculas de minúsculas.

No curso Writing Efficient R Code, você encontrará outras práticas recomendadas para escrever código em R.

17. Quais são os tipos de loops existentes no R e qual é a sintaxe de cada tipo?

1. For loop - iterasobre uma sequência o número de vezes igual ao seu comprimento (a menos que as instruções break e/ou next sejam usadas) e executa o mesmo conjunto de operações em cada item dessa sequência. Esse é o tipo mais comum de loops. A sintaxe de um loop for no R é a seguinte:

for (variable in sequence) {
    operations
}

2. While loop - executao mesmo conjunto de operações até que uma condição lógica predefinida (ou várias condições lógicas) seja atendida - a menos que as instruções break e/ou next sejam usadas. Ao contrário dos loops for, não sabemos antecipadamente o número de iterações que um loop while executará. Antes de executar um loop while, precisamos atribuir uma variável (ou várias variáveis) e, em seguida, atualizar seu valor dentro do corpo do loop a cada iteração. A sintaxe de um loop while no R é a seguinte:

variable assignment

while (logical condition) {
    operations
    variable update
}

3. Loop de repetição -executa repetidamenteo mesmo conjunto de operações até que uma condição de interrupção predefinida (ou várias condições de interrupção) seja atendida. Para introduzir essa condição, um loop de repetição deve conter um bloco de código de instrução if, que, por sua vez, deve incluir a instrução break em seu corpo. Assim como os loops while, não sabemos antecipadamente o número de iterações que um loop de repetição executará. A sintaxe de um loop de repetição no R é a seguinte:

repeat { 
    operations 
    if(break condition) {
        break
    }
}

Você pode ler mais sobre loops no R em nosso tutorial separado.

18. Como agregar dados no R?

Para agregar dados no R, usamos a função aggregate(). Essa função tem os seguintes parâmetros essenciais, nesta ordem:

  • x-o quadro de dados a ser agregado.
  • by-uma lista dos fatores a serem agrupados.
  • FUN-uma função agregada para calcular as estatísticas resumidas de cada grupo (por exemplo, mean, max, min, count, sum).

19. Como mesclar dados no R?

1. Usando a função cbind() - somente se os quadros de dados tiverem o mesmo número de linhas e os registros forem os mesmos e estiverem na mesma ordem:

df <- cbind(df1, df2)

2. Usar a função rbind() para combinar os quadros de dados verticalmente - somente se eles tiverem um número igual de colunas com nomes idênticos do mesmo tipo de dados e que apareçam na mesma ordem:

df <- rbind(df1, df2)

3. Usar a função merge() para mesclar quadros de dados por uma coluna em comum, geralmente uma coluna de ID:

  • União interna:
df <- merge(df1, df2, by="ID")
  • Junção à esquerda:
df <- merge(df1, df2, by="ID", all.x=TRUE)
  • Junção direita:
df <- merge(df1, df2, by="ID", all.y=TRUE)
  • Junção externa:
df <- merge(df1, df2, by="ID", all=TRUE)

4. Usando a função join() do pacote dplyr para mesclar quadros de dados por uma coluna em comum, geralmente uma coluna de ID:

df <- join(df1, df2, by="ID", type="type_of_join")

O parâmetro type assume um dos seguintes valores: "inner", "left", "right" ou "full".

20. Como concatenar cadeias de caracteres no R?

Podemos concatenar duas ou mais cadeias de caracteres no R usando as funções paste() ou cat(). A primeira abordagem é mais popular. Ambas as funções recebem qualquer número de cadeias de caracteres a serem concatenadas e também podem receber um parâmetro opcional sep (juntamente com alguns outros parâmetros opcionais) - um caractere ou uma sequência de caracteres que separará as cadeias de caracteres anexadas na cadeia de caracteres resultante (um espaço em branco por padrão).

21. Como transpor dados bidimensionais no R?

Podemos transpor um quadro de dados ou uma matriz no R para que as colunas se tornem as linhas e vice-versa. Para isso, precisamos usar a função t() da base R. Por exemplo:

df <- data.frame(col_1=c(10, 20, 30), col_2=c(11, 22, 33))
print(df)
​
transposed_df <- t(df)
print(transposed_df)

Saída:

 col_1 col_2
1    10    11
2    20    22
3    30    33
      [,1] [,2] [,3]
col_1   10   20   30
col_2   11   22   33

22. Como encadear várias operações no R?

Podemos encadear várias operações no R usando o operador de pipe (%>%) fornecido pela coleção tidyverse. O uso desse operador permite criar um pipeline de funções em que a saída da primeira função é passada como entrada para a segunda função e assim por diante, até que o pipeline termine. Isso elimina a necessidade de criar variáveis adicionais e melhora significativamente a legibilidade geral do código.

Um exemplo de uso do operador pipe em um quadro de dados:

df <- data.frame(a=1:4, b=11:14, c=21:24)
print(df)
​
df_new <- df %>% select(a, b) %>% filter(a > 2)
print(df_new)

Saída:

 a  b  c
1 1 11 21
2 2 12 22
3 3 13 23
4 4 14 24
  a  b
1 3 12
2 4 13

23. Que tipos de gráficos de dados podem ser criados no R?

Como a visualização de dados é um dos pontos fortes das linguagens de programação do R, podemos criar todos os tipos de gráficos de dados no R:

  • Tipos comuns de gráficos de dados:
    • Gráfico de barras - mostraos valores numéricos de dados categóricos.
    • Gráfico de linhas - mostraa progressão de uma variável, geralmente ao longo do tempo.
    • Gráfico de dispersão - mostraas relações entre duas variáveis.
    • Gráfico de área baseadoem um gráfico de linhas, com a área abaixo da linha colorida ou preenchida com um padrão.
    • Gráfico de pizza - mostraa proporção de cada categoria de dados categóricos como uma parte do todo.
    • Box plot - mostraum conjunto de estatísticas descritivas dos dados.
  • Tipos avançados de gráficos de dados:
    • Gráfico de violino - mostraum conjunto de estatísticas descritivas dos dados e a forma de distribuição desses dados.
    • Mapa de calor - mostraa magnitude de cada ponto de dados numéricos no conjunto de dados.
    • Mapa de árvore - mostraos valores numéricos de dados categóricos, geralmente como uma parte do todo.
    • Dendrograma - mostrauma hierarquia interna e o agrupamento dos dados.
    • Gráfico de bolhas - mostraas relações entre três variáveis.
    • Gráfico Hexbin - mostraas relações de duas variáveis numéricas em um conjunto de dados relativamente grande.
    • Nuvem de palavras - mostraa frequência das palavras em um texto de entrada.
    • Mapa coroplético - mostraestatísticas temáticas agregadas de geodados.
    • Gráfico de empacotamento circular - mostrauma hierarquia interna dos dados e os valores dos pontos de dados
    • etc.

A faixa de habilidades Visualização de dados com R o ajudará a ampliar seus horizontes no campo dos gráficos R. Se você preferir aprender a visualização de dados em R em um contexto mais amplo, explore uma trilha de carreira completa e amigável para iniciantes, Data Scientist with R.

24. O que é reciclagem de vetores no R?

Se tentarmos realizar alguma operação em dois vetores R com comprimentos diferentes, o interpretador R detecta o mais curto, recicla seus itens na mesma ordem até que os comprimentos dos dois vetores coincidam e só então realiza a operação necessária nesses vetores. No entanto, antes de iniciar a reciclagem do vetor, o interpretador R exibe uma mensagem de aviso sobre a incompatibilidade inicial dos comprimentos dos vetores.

Por exemplo, se tentarmos executar a seguinte adição:

c(1, 2, 3, 4, 5) + c(1, 2, 3)

O segundo vetor, devido à reciclagem do vetor, será de fato convertido em c(1, 2, 3, 1, 2). Portanto, o resultado final dessa operação será c(2, 4, 6, 5, 7).

Embora às vezes a reciclagem de vetores possa ser benéfica (por exemplo, quando esperamos a ciclicidade dos valores nos vetores), na maioria das vezes ela é inadequada e enganosa. Por isso, devemos ter cuidado e observar os comprimentos dos vetores antes de realizar operações sobre eles.

25. Qual é a utilidade do next e break no R?

A instrução next é usada para pular uma iteração específica e passar para a próxima se uma determinada condição for atendida. A instrução break é usada para interromper e sair do loop em uma iteração específica se uma determinada condição for atendida. Quando usada em um dos loops internos de um loop aninhado, essa instrução sai apenas desse loop interno.

As instruções next e break podem ser usadas em qualquer tipo de loop no R: loops for, loops while e loops de repetição. Eles também podem ser usados no mesmo loop, por exemplo:

for(i in 1:10) {
    if(i < 5)
        next
    if(i == 8)
        break
    print(i)}

Saída:

[1] 5
[1] 6
[1] 7

26. Qual é a diferença entre o str() e summary() funções no R?

A função str() retorna a estrutura de um objeto R e as informações gerais sobre ele, cujo conteúdo exato depende da estrutura de dados desse objeto. Por exemplo, para um vetor, ele retorna o tipo de dados de seus itens, o intervalo de índices de itens e os valores dos itens (ou vários primeiros valores, se o vetor for muito longo). Para um quadro de dados, ele retorna sua classe (data.frame), o número de observações e variáveis, os nomes das colunas, o tipo de dados de cada coluna e vários primeiros valores de cada coluna.

A função summary() retorna as estatísticas resumidas de um objeto R. É aplicado principalmente a quadros de dados e matrizes, para os quais retorna os valores mínimo, máximo, médio e mediano, e o 1º e 3º quartis para cada coluna numérica, enquanto que para as colunas de fatores, retorna a contagem de cada nível.

27. Qual é a diferença entre o subset() e sample() funções em R?

A função subset() no R é usada para extrair linhas e colunas de um quadro de dados ou de uma matriz, ou elementos de um vetor, com base em determinadas condições, por exemplo: subset(my_vector, my_vector > 10).

Em vez disso, a função sample() em R pode ser aplicada somente a vetores. Ele extrai uma amostra aleatória do tamanho predefinido dos elementos de um vetor, com ou sem substituição. Por exemplo, sample(my_vector, size=5, replace=TRUE)

Perguntas da entrevista sobre programação avançada em R

28. Como criar uma nova coluna em um quadro de dados no R com base em outras colunas?

1. Usando as funções transform() e ifelse() da base R:

df <- data.frame(col_1 = c(1, 3, 5, 7),  col_2 = c(8, 6, 4, 2))
print(df)
​
# Adding the column col_3 to the data frame df
df <- transform(df, col_3 = ifelse(col_1 < col_2, col_1 + col_2, col_1 * col_2))
print(df)

Saída:

  col_1 col_2
1     1     8
2     3     6
3     5     4
4     7     2
  col_1 col_2 col_3
1     1     8     9
2     3     6     9
3     5     4    20
4     7     2    14

2. Usando as funções with() e ifelse() da base R:

df <- data.frame(col_1 = c(1, 3, 5, 7),  col_2 = c(8, 6, 4, 2))
print(df)
​
# Adding the column col_3 to the data frame df
df["col_3"] <- with(df, ifelse(col_1 < col_2, col_1 + col_2, col_1 * col_2))
print(df)

Saída:

  col_1 col_2
1     1     8
2     3     6
3     5     4
4     7     2
  col_1 col_2 col_3
1     1     8     9
2     3     6     9
3     5     4    20
4     7     2    14

3. Usando a função apply() da base R:

df <- data.frame(col_1 = c(1, 3, 5, 7),  col_2 = c(8, 6, 4, 2))
print(df)
​
# Adding the column col_3 to the data frame df
df["col_3"] <- apply(df, 1, FUN = function(x) if(x[1] < x[2]) x[1] + x[2] else x[1] * x[2])
print(df) 

Saída:

  col_1 col_2
1     1     8
2     3     6
3     5     4
4     7     2
  col_1 col_2 col_3
1     1     8     9
2     3     6     9
3     5     4    20
4     7     2    14

4. Usando a função mutate() do pacote dplyr e a função ifelse() do R básico:

df <- data.frame(col_1 = c(1, 3, 5, 7),  col_2 = c(8, 6, 4, 2))
print(df)
​
# Adding the column col_3 to the data frame df
df <- mutate(df, col_3 = ifelse(col_1 < col_2, col_1 + col_2, col_1 * col_2))
print(df)

Saída:

  col_1 col_2
1     1     8
2     3     6
3     5     4
4     7     2
  col_1 col_2 col_3
1     1     8     9
2     3     6     9
3     5     4    20
4     7     2    14

29. Como analisar uma data a partir de sua representação em string no R?

Para analisar uma data a partir de sua representação em string no R, devemos usar o pacote lubridate da coleção tidyverse. Esse pacote oferece várias funções para analisar uma cadeia de caracteres e extrair a data padrão dela com base no padrão de data inicial dessa cadeia. Essas funções são ymd(), ymd_hm(), ymd_hms(), dmy(), dmy_hm(), dmy_hms(), mdy(), mdy_hm(), mdy_hms(), etc., em que y, m, d, h, m e s correspondem a ano, mês, dia, horas, minutos e segundos, respectivamente.

Por exemplo, se executarmos a função dmy() passando para ela qualquer uma das cadeias de caracteres "05-11-2023", "05/11/2023" ou "05.11.2023", representando a mesma data, receberemos o mesmo resultado: 2023-11-05. Isso se deve ao fato de que, em todos os três casos, apesar de termos símbolos divisores diferentes, temos o mesmo padrão: o dia seguido pelo mês seguido pelo ano.

30. Qual é a utilidade do switch() no R?

A função switch() no R é uma instrução de controle de ramificação multidirecional que avalia uma expressão em relação aos itens de uma lista. Ele tem a seguinte sintaxe:

switch(expression, case_1, case_2, case_3....)

A expressão passada para a função switch() pode ser avaliada como um número ou uma cadeia de caracteres e, dependendo disso, o comportamento da função é diferente.

1. Se a expressão for avaliada como um número, a função switch() retornará o item da lista com base na correspondência posicional (ou seja, seu índice é igual ao número avaliado pela expressão). Se o número for maior que o número de itens na lista, a função switch() retornará NULL. Por exemplo:

switch(2, "circle", "triangle", "square")

Saída:

"triangle"

2. Se a expressão for avaliada como uma cadeia de caracteres, a função switch() retornará o valor com base em seu nome:

switch("red", "green"="apple", "orange"="carot", "red"="tomato", "yellow"="lemon")

Saída:

"tomato"

Se houver várias correspondências, o primeiro valor correspondente será retornado. Também é possível adicionar um item sem nome como o último argumento da função switch() que será uma opção de fallback padrão no caso de não haver correspondências. Se essa opção padrão não for definida e se não houver correspondências, a função retornará NULL.

A função switch() é uma alternativa eficiente às longas declarações if-else, pois torna o código menos repetitivo e mais legível. Normalmente, ele é usado para avaliar uma única expressão. Ainda podemos escrever construções de switch aninhadas mais complexas para avaliar várias expressões. Entretanto, nesse formato, a função switch() rapidamente se torna difícil de ler e, portanto, perde sua principal vantagem sobre as construções if-else.

31. Qual é a diferença entre as funções apply(), lapply(), sapply()e tapply()?

Embora todas essas funções permitam a iteração em uma estrutura de dados sem o uso de loops e executem a mesma operação em cada elemento dela, elas são diferentes em termos do tipo de entrada e saída e da função que executam.

  • apply()-recebe um quadro de dados, uma matriz ou uma matriz e retorna um vetor, uma lista, uma matriz ou uma matriz. Essa função pode ser aplicada em uma linha, em uma coluna ou em ambas.
  • lapply()-recebe um vetor, uma lista ou um quadro de dados e sempre retorna uma lista. No caso de um quadro de dados como entrada, essa função é aplicada somente em colunas.
  • sapply()-recebe um vetor, uma lista ou um quadro de dados e retorna a estrutura de dados mais simplificada, ou seja, um vetor para um vetor de entrada, uma lista para uma lista de entrada e uma matriz para um quadro de dados de entrada.
  • tapply()-calcula estatísticas resumidas para diferentes fatores (ou seja, dados categóricos).

32. Liste e defina as instruções de controle no R.

Há três grupos de instruções de controle no R: instruções condicionais, instruções de loop e instruções de salto.

Declarações condicionais:

  • if-testa se uma determinada condição é verdadeira e fornece operações a serem executadas em caso afirmativo.
  • if-else-testa se uma determinada condição é verdadeira, fornece operações a serem executadas em caso afirmativo e outro conjunto de operações a serem executadas no caso oposto.
  • if... else if... else-testa uma série de condições uma a uma, fornece operações a serem executadas para cada condição se ela for verdadeira e um conjunto de operações de reserva a serem executadas se nenhuma dessas condições for verdadeira.
  • switch-avalia uma expressão em relação aos itens de uma lista e retorna um valor da lista com base nos resultados dessa avaliação.

Declarações de loop:

  • for-em loops for, itera sobre uma sequência.
  • while-Em loops while, verifica se uma condição lógica predefinida (ou várias condições lógicas) é atendida na iteração atual.
  • repeat-Em loops de repetição, continua a executar o mesmo conjunto de operações até que uma condição de interrupção predefinida (ou várias condições de interrupção) seja atendida.

Declarações de salto:

  • next-pula uma iteração específica de um loop e passa para a próxima se uma determinada condição for atendida.
  • break-interrompe e sai do loop em uma iteração específica se uma determinada condição for atendida.
  • return-saia de uma função e retorna o resultado.

33. O que são expressões regulares e como você trabalha com elas no R?

Uma expressão regular, ou regex, em R ou em outras linguagens de programação, é um caractere ou uma sequência de caracteres que descreve um determinado padrão de texto e é usada para minerar dados de texto. No R, há duas maneiras principais de trabalhar com expressões regulares:

  1. Usar a base R e suas funções (como grep(), regexpr(), gsub(), regmatches(), etc.) para localizar, combinar, extrair e substituir regex.
  2. Usando um pacote stringr especializado da coleção tidyverse. Essa é uma maneira mais conveniente de trabalhar com o R regex, pois as funções do stringr têm nomes e sintaxe muito mais intuitivos e oferecem uma funcionalidade mais abrangente.

A Guide to R Regular Expressions fornece mais detalhes sobre como trabalhar com regex no R.

34. Quais pacotes são usados para aprendizado de máquina no R?

  • paravários algoritmos de classificação e regressão.
  • e1071-paramáquinas de vetor de suporte (SVM), classificador naive Bayes, agrupamento ensacado, agrupamento difuso e k-nearest neighbors (KNN).
  • kernlab - fornecemétodos baseados em kernel para algoritmos de classificação, regressão e agrupamento.
  • randomForest - paraalgoritmos de classificação e regressão de florestas aleatórias.
  • xgboost - paraalgoritmos de aumento de gradiente, regressão linear e árvore de decisão.
  • rpart-forrecursive partitioning em árvores de classificação, regressão e sobrevivência.
  • glmnet-paramétodos de regularização de laço e rede elástica aplicados a algoritmos de regressão linear, regressão logística e regressão multinomial.
  • nnet-pararedes neurais e algoritmos log-lineares multinomiais.
  • tensorflow - ainterface do R para o TensorFlow, para redes neurais profundas e computação numérica usando gráficos de fluxo de dados.
  • Keras - ainterface R para o Keras, para redes neurais profundas.

35. Como selecionar recursos para aprendizado de máquina no R?

Vamos considerar três abordagens diferentes e como implementá-las no pacote caret.

  1. Detectando e removendo recursos altamente correlacionados do conjunto de dados.

Precisamos criar uma matriz de correlação de todos os recursos e, em seguida, identificar os altamente correlacionados, geralmente aqueles com um coeficiente de correlação maior que 0,75:

corr_matrix <- cor(features)
highly_correlated <- findCorrelation(corr_matrix, cutoff=0.75)
print(highly_correlated)
  1. Classificando os recursos do quadro de dados por sua importância.

Precisamos criar um esquema de treinamento para controlar os parâmetros do treinamento, usá-lo para criar um modelo selecionado e, em seguida, estimar a importância da variável para esse modelo:

control <- trainControl(method="repeatedcv", number=10, repeats=5)
model <- train(response_variable~., data=df, method="lvq", preProcess="scale", trControl=control)
importance <- varImp(model)
print(importance)
  1. Selecionando automaticamente os recursos ideais.

Um dos métodos mais populares fornecidos pela caret para selecionar automaticamente os recursos ideais é um algoritmo de seleção retroativa chamado RFE (Recursive Feature Elimination, eliminação recursiva de recursos).

Precisamos calcular o controle usando um método de reamostragem selecionado e uma lista predefinida de funções, aplicar o algoritmo RFE passando para ele os recursos, a variável de destino, o número de recursos a serem retidos e o controle e, em seguida, extrair os preditores selecionados:

control <- rfeControl(functions=caretFuncs, method="cv", number=10)
results <- rfe(features, target_variable, sizes=c(1:8), rfeControl=control)
print(predictors(results))

Se você precisa fortalecer suas habilidades de aprendizado de máquina em R, aqui está um recurso sólido e abrangente: Cientista de aprendizado de máquina com R.

36. O que são correlação e covariância e como calculá-las no R?

A correlação é uma medida da força e da direção das relações lineares entre duas variáveis. Ele assume valores de -1 (uma correlação negativa perfeita) a 1 (uma correlação positiva perfeita). A covariância é uma medida do grau de alteração de duas variáveis em relação à outra e da direção das relações lineares entre elas. Ao contrário da correlação, a covariância não tem nenhum limite de intervalo.

No R, para calcular a correlação, precisamos usar a função cor() e, para calcular a covariância, a função cov(). A sintaxe de ambas as funções é idêntica: precisamos passar duas variáveis (vetores) para as quais queremos calcular a medida (por exemplo, cor(vector_1, vector_2) ou cov(vector_1, vector_2)), ou todo o quadro de dados, se quisermos calcular a correlação ou covariância entre todas as variáveis desse quadro de dados (por exemplo, cor(df) or cov(df)). No caso de dois vetores, o resultado será um único valor; no caso de um quadro de dados, o resultado será uma matriz de correlação (ou covariância).

37. Liste e defina as várias abordagens para estimar a precisão do modelo no R.

Abaixo estão várias abordagens e como implementá-las no pacote caret do R.

  • Divisão de dados -todo o conjunto de dados é dividido em um conjunto de dados de treinamento e um conjunto de dados de teste. O primeiro é usado para ajustar o modelo e o segundo é usado para testar seu desempenho em dados não vistos. Essa abordagem funciona particularmente bem em big data. Para implementar a divisão de dados no R, precisamos usar a função createDataPartition() e definir o parâmetro p como a proporção necessária de dados que vai para o treinamento.
  • Reamostragem bootstrap - extrairamostras aleatórias de dados do conjunto de dados e estimar o modelo com base nelas. Essas iterações de reamostragem são executadas várias vezes e com substituição. Para implementar a reamostragem bootstrap no R, precisamos definir o parâmetro method da função trainControl() como "boot" ao definir o controle de treinamento do modelo.
  • Métodos de validação cruzada
    • validação cruzada k-fold - o conjunto de dados é dividido em k subconjuntos. O modelo é treinado em k-1 subconjuntos e testado no restante. O mesmo processo é repetido para todos os subconjuntos e, em seguida, a precisão do modelo final é estimada.
    • Validação cruzada k-fold repetida - o princípio é o mesmo da validação cruzada k-fold, só que o conjunto de dados é dividido em k subconjuntos mais de uma vez. Para cada repetição, a precisão do modelo é estimada e, em seguida, a precisão final do modelo é calculada como a média dos valores de precisão do modelo para todas as repetições.
    • Validação cruzada leave-one-out (LOOCV) - uma observação de dados é deixada de lado e o modelo é treinado em todas as outras observações de dados. O mesmo processo é repetido para todas as observações de dados.

Para implementar esses métodos de validação cruzada no R, precisamos definir o parâmetro method da função trainControl() como "cv", "repeatedcv" ou "LOOCV", respectivamente, ao definir o controle de treinamento do modelo.

38. O que é o teste do qui-quadrado e como executá-lo no R?

O teste de hipótese estatística qui-quadrado é uma técnica usada para determinar se duas variáveis categóricas são independentes ou se há uma correlação entre elas. Para realizar o teste de qui-quadrado no R, precisamos usar a função chisq.test() do pacote stats. As etapas são as seguintes:

1. Crie uma tabela de contingência com as variáveis categóricas de interesse usando a função table() da base R:

table = table(df["var_1"], df["var_2"]) 

2. Passe a tabela de contingência para a função chisq.test():

chisq.test(table) 

Atualize seus conhecimentos sobre testes de qui-quadrado e outros testes de hipótese em nosso curso Hypothesis Testing in R.

39. O que é Shiny em R?

Shiny é um pacote R de código aberto que permite a criação fácil e rápida de aplicativos e páginas da Web totalmente interativos para ciência de dados usando apenas R, sem nenhum conhecimento de HTML, CSS ou JavaScript. O Shiny in R oferece vários recursos básicos e avançados, widgets, layouts, exemplos de aplicativos da Web e seu código subjacente para serem desenvolvidos e personalizados, bem como apresentações de usuários de várias áreas (tecnologia, esportes, bancos, educação etc.) reunidas e categorizadas pela comunidade de desenvolvedores de aplicativos Shiny.

40. Qual é a diferença entre o with() e within() funções?

A função with() avalia uma expressão R em uma ou mais variáveis de um quadro de dados e gera o resultado sem modificar o quadro de dados. A função within() avalia uma expressão do R em uma ou mais variáveis de um quadro de dados, modifica o quadro de dados e gera o resultado. Abaixo, podemos ver como essas funções funcionam usando um quadro de dados de amostra como exemplo:

df <- data.frame(a = c(1, 2, 3),  b = c(10, 20, 30))
print(df)

with(df, a * b)

print(within(df, c <- a * b))

Saída:

  a  b
1 1 10
2 2 20
3 3 30

10  40  90
  a  b  c
1 1 10 10
2 2 20 40
3 3 30 90

Ao usar a função within(), para salvar as modificações, precisamos atribuir a saída da função a uma variável.

Conclusão

Para concluir, neste artigo, consideramos as 40 perguntas mais comuns em entrevistas sobre programação em R e quais respostas são esperadas para cada uma delas. Esperamos que, com essas informações em mãos, você se sinta mais confiante e pronto para uma entrevista bem-sucedida em R, esteja você procurando um emprego em R ou o candidato certo para uma vaga em aberto na sua empresa.

Para ter experiência prática em responder a perguntas, confira nosso curso Practicing Statistics Interview Questions in R.

Temas

Comece sua jornada de R hoje mesmo!

Track

R Developer

52hrs hr
From data wrangling to developing packages, gain the career-building skills you need to succeed as an R developer. No prior coding experience needed.
See DetailsRight Arrow
Start Course
Veja MaisRight Arrow
Relacionado

blog

Como se tornar programador em 2023: guia passo a passo

Descubra tudo o que você precisa saber sobre como se tornar um programador de computador. Saiba quais são as competências necessárias para iniciar sua carreira em programação.
Natassha Selvaraj's photo

Natassha Selvaraj

14 min

blog

Um guia completo para os salários dos analistas de negócios em 2024

Descubra quanto você pode ganhar e como aumentar seu salário atual como analista de negócios, que a Amazon aponta como um dos empregos altamente qualificados que mais cresceram nos últimos 5 anos.
DataCamp Team's photo

DataCamp Team

14 min

blog

O que é o R? - Uma introdução à potência da computação estatística

Aprenda tudo o que você precisa saber sobre a linguagem de programação R e descubra por que ela é a linguagem mais usada na ciência de dados.
Summer Worsley's photo

Summer Worsley

18 min

R Project

blog

As 8 principais ideias de projetos de R para 2023

Descubra o que é o R e todos os benefícios de usá-lo, além de dar exemplos e novas ideias para um projeto.
Elena Kosourova 's photo

Elena Kosourova

16 min

tutorial

Classificação de K-Nearest Neighbors (KNN) com o tutorial do R

Aprenda a usar os pacotes R 'class' e 'caret', ajustar hiperparâmetros e avaliar o desempenho do modelo.
Abid Ali Awan's photo

Abid Ali Awan

11 min

tutorial

Introdução a modelos não lineares e percepções usando o R

Descubra as complexidades dos modelos não lineares em comparação com os modelos lineares. Saiba mais sobre suas aplicações, limitações e como ajustá-las usando conjuntos de dados do mundo real.

Somil Asthana

17 min

See MoreSee More