Com relação à informática aplicada à estatística, julgue o i...
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.
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.
- Já 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