Com relação à informática aplicada à estatística, julgue o i...

Próximas questões
Com base no mesmo assunto
Q3257792 Programação

Com relação à informática aplicada à estatística, julgue o item a seguir.


Se, em uma simulação, for necessário preencher um vetor grande, será mais eficiente usar a linguagem R para alocar e preencher o vetor inteiro, em vez de criar um vetor unitário e redimensioná-lo.

Alternativas

Gabarito comentado

Confira o gabarito comentado por um dos nossos professores

Alternativa Correta: C - certo

O tema central desta questão é a alocação eficiente de memória em linguagens de programação, especialmente a linguagem R, que é frequentemente utilizada em análises estatísticas. A questão aborda a eficiência de métodos de alocação de vetores na linguagem R, um aspecto crítico quando se trabalha com grandes volumes de dados.

Ao lidar com a programação em R, é importante compreender que a alocação prévia de memória para um vetor pode ser significativamente mais eficiente do que redimensioná-lo repetidamente. Quando você aloca um vetor inteiro de uma vez, o R consegue gerenciar melhor a memória, já que não precisa realizar operações internas de cópia e realocação a cada inserção de elemento.

Para ilustrar, considere dois métodos: criar um vetor de tamanho fixo desde o início, ou criar um vetor pequeno e ir aumentando seu tamanho conforme adiciona elementos. O primeiro método é mais eficiente porque minimiza as operações de cópia e realocação, que podem ser custosas em termos de tempo de processamento e uso de recursos.

Segundo o manual introdutório do R, práticas de programação eficientes são essenciais para lidar com grandes conjuntos de dados, principalmente em análises estatísticas complexas, comuns na atuação de um Analista Judiciário - Estatística.

Justificativa da Alternativa Correta (C - certo): Alocar e preencher o vetor inteiro de uma vez é mais eficiente em R. Isso se deve ao fato de que o processo de redimensionamento envolve a criação de um novo vetor e a cópia dos dados existentes para o novo espaço, o que é computacionalmente custoso, especialmente com grandes vetores.

A questão não oferece alternativas incorretas, pois é uma questão de certo ou errado. Portanto, a explicação concentra-se em justificar por que a afirmação dada é correta.

Gostou do comentário? Deixe sua avaliação aqui embaixo!

Clique para visualizar este gabarito

Visualize o gabarito desta questão clicando no botão abaixo

Comentários

Veja os comentários dos nossos alunos

Em R, para melhor desempenho em simulações com vetores grandes, é mais eficiente pré-alocar o vetor com o tamanho final desejado e preenchê-lo, do que começar com um vetor pequeno e redimensioná-lo repetidamente.

Redimensionar vetores frequentemente envolve cópias de memória e realocação, o que é computacionalmente custoso.

A afirmativa está certa.

Na linguagem R, pré-alocar a memória para um vetor grande é muito mais eficiente do que expandi-lo iterativamente (como em loops que aumentam o vetor a cada passo).

  • Quando se cria um vetor unitário e o redimensiona a cada iteração, o R precisa realocar a memória repetidamente, copiando os dados para um novo espaço — isso é computacionalmente custoso.
  • pré-alocar o vetor com o tamanho final evita esse custo, pois a memória é alocada de uma vez só, e o preenchimento ocorre diretamente nos índices já existentes.

A prática de alocar antecipadamente é recomendada por questões de eficiência e desempenho.

Resposta:Certo

GABARITO CERTO ✅️

Em R, é mais eficiente alocar o vetor com tamanho final desejado desde o início. Redimensionar repetidamente um vetor (como em crescimentos com c()) é custoso, pois exige cópias sucessivas na memória.

Correto. A afirmação descreve uma prática essencial de performance em R. A pré-alocação de vetores é mais eficiente, pois evita o custo computacional de copiar o objeto inteiro na memória a cada iteração do loop, o que ocorre ao redimensioná-lo dinamicamente.

Siga-me @rexconcurseiro

GABARITO: CERTO

Na linguagem R, quando precisamos preencher um vetor grande em uma simulação ou análise, é mais eficiente pré-alocar o vetor inteiro de uma vez, em vez de criar um vetor pequeno e ir redimensionando (aumentando) a cada iteração.

Por quê?

Pré-alocação: R reserva na memória todo o espaço necessário de uma só vez.

Redimensionamento repetido: cada vez que você aumenta o vetor, o R precisa criar uma nova área de memória, copiar os elementos antigos e adicionar os novos. Isso gera sobrecarga computacional e torna o processo mais lento.

# Ineficiente: redimensionando a cada passo

x <- c() (Obs: lembrando que "<-" é uma seta)

for(i in 1:10000){

x <- c(x, i)  # cada passo recria o vetor

}

# Eficiente: pré-alocando

y <- numeric(10000) (Obs: lembrando que "<-" é uma seta)

for(i in 1:10000){

 y[i] <- i   # apenas preenche posições já reservadas

}

Se tiver dúvida irei detalhar o # Eficiente. Vamos lá:

y <- numeric(10000)

for(i in 1:10000){

 y[i] <- i  # apenas preenche posições já reservadas

}

1. y <- numeric(10000)

A função numeric(n) cria um vetor numérico de tamanho n.

Nesse caso, numeric(10000) gera um vetor com 10.000 posições, todas inicialmente preenchidas com 0.

Ou seja, y passa a ser um vetor de 10.000 zeros.

Exemplo: c(0, 0, 0, ..., 0).

2. for(i in 1:10000){ ... }

O for é um laço de repetição que percorre os valores de 1 até 10000.

A cada iteração, a variável i assume um valor diferente dentro desse intervalo.

3. y[i] <- i

Dentro do laço, o código acessa a posição i do vetor y e atribui o valor i a essa posição.

Na primeira iteração (i = 1), y[1] <- 1.

Na segunda (i = 2), y[2] <- 2.

… e assim por diante, até i = 10000.

Obs: o símbolo <- é chamado de operador de atribuição. Ele não é literalmente uma “seta”, mas visualmente parece uma seta apontando para a esquerda. O que ele faz é atribuir um valor a um objeto. Em outras palavras, ele pega o resultado de uma expressão e “guarda” dentro de uma variável.

continuando...

Resultado final

Ao fim do laço, o vetor y contém os números de 1 até 10000 em ordem:

y = c(1, 2, 3, 4, ..., 10000)

Por que isso é eficiente?

O vetor foi pré-alocado com 10.000 posições logo no início (numeric(10000)), evitando que o R precise redimensionar o vetor a cada passo.

Assim, o laço apenas preenche posições já reservadas, o que é muito mais rápido do que criar e expandir o vetor repetidamente.

O segundo método é muito mais rápido e consome menos recursos.

Clique para visualizar este comentário

Visualize os comentários desta questão clicando no botão abaixo