[R-br] RES: Não reconhece variável

Benilton Carvalho beniltoncarvalho em gmail.com
Segunda Outubro 3 17:49:18 BRT 2011


Para ambos os casos, suponha o seguinte codigo:

x <- NULL
for (i in 1:3)
  x[i] <- pi

- Passo 1: crie um obj 'x' nulo (comprimento zero)
- Passo 2.1: desista de 'x';
- Passo 2.2: crie um obj temporario de comprimento 1;
- Passo 2.3: coloque pi na primeira posicao desse obj
- Passo 2.4: apague x
- Passo 2.5: renomeie o temporario para 'x';
- Passo 3: repita tudo do passo 2, mudando o comprimento para 2;
- Passo 4: repita tudo do passo 2, mudando o comprimento para 3;

Em suma, vc faz trocentas copias de um mesmo objeto e, eventualmente,
a memoria estara' completamente fragmentada e vc vera' erros do genero
"Cannot allocate vector of size XXXX Mb", apesar de ter RAM.

Apesar de nao resolver completamente o problema,

x <- vector('numeric', 3)

ja aloca inicialmente toda a memoria que vc precisara... assim,
diminui as chances de problema de alocacao e aumenta a velocidade de
execucao, ja' q vc nao precisa ficar "copiando/colando" o objeto
anterior toda vez que adiciona um novo elemento...

(e o mesmo vale para listas)

b

2011/10/3 Leandro Marino <leandro em cesgranrio.org.br>:
> B,
>
> Para completar seu tópico. Você poderia especificar os motivos para a não utilização destes itens?!
>
> Atenciosamente,
> Leandro Lins Marino
> Centro de Avaliação
> Fundação CESGRANRIO
> Rua Santa Alexandrina, 1011 - 2º andar
> Rio de Janeiro, RJ - CEP: 20261-903
> R (21) 2103-9600 R.:236
> ( leandro em cesgranrio.org.br
>
>   Antes de imprimir pense em sua responsabilidade e compromisso com o MEIO AMBIENTE
>
> Esta mensagem, incluindo seus anexos, pode conter informacoes privilegiadas e/ou de carater confidencial, nao podendo ser retransmitida sem autorizacao do remetente. Se voce nao e o destinatario ou pessoa autorizada a recebe-la, informamos que o seu uso, divulgacao, copia ou arquivamento sao proibidos.
> Portanto, se você recebeu esta mensagem por engano, por favor, nos informe respondendo imediatamente a este e-mail e em seguida apague-a.
>
> -----Mensagem original-----
> De: r-br-bounces em listas.c3sl.ufpr.br [mailto:r-br-bounces em listas.c3sl.ufpr.br] Em nome de Benilton Carvalho
> Enviada em: segunda-feira, 3 de outubro de 2011 17:34
> Para: r-br em listas.c3sl.ufpr.br
> Assunto: Re: [R-br] Não reconhece variável
>
> Adicionalmente, dois outros itens da lista "O que nao fazer em R"
> estao presentes nessa discussao:
>
> x <- NULL
> for (i in 1:10)
>  x[i] <- alguma_coisa()
>
> e
>
> x <- c()
> for (i in 1:10)
>  x[i] <- alguma_coisa()
>
> devem ser substituidos por:
>
> x <- vector('numeric', 10)
> for (i in 1:10)
>  x[i] <- alguma_coisa()
>
> b
> _______________________________________________
> R-br mailing list
> R-br em listas.c3sl.ufpr.br
> https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br
> Leia o guia de postagem (http://www.leg.ufpr.br/r-br-guia) e forneça código mínimo reproduzível.
>
>
> _______________________________________________
> R-br mailing list
> R-br em listas.c3sl.ufpr.br
> https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br
> Leia o guia de postagem (http://www.leg.ufpr.br/r-br-guia) e forneça código mínimo reproduzível.



-- 
Successful people ask better questions, and as a result, they get
better answers. (Tony Robbins)


Mais detalhes sobre a lista de discussão R-br