Funcao attach ou $?
4 participantes
Página 1 de 1
Funcao attach ou $?
Prof Vidal durante o workshop em 2018 mencionou que prefere usar o $ invez da funcao attach.
Mas no video # 1.7 feito em 2015, ele ensina o uso do attach.
minha duvida e sobre nesse momento do aprendizagem ..qual e o melhor attach(dados) ou dados($nome_da_coluna)
Entao, devo aprender o uso do attach como foi ensinado em 2015 ou o Prof Vidal vai atualizar o ensino dessa funcao attach?
Obrigada,
Valeria
Mas no video # 1.7 feito em 2015, ele ensina o uso do attach.
minha duvida e sobre nesse momento do aprendizagem ..qual e o melhor attach(dados) ou dados($nome_da_coluna)
Entao, devo aprender o uso do attach como foi ensinado em 2015 ou o Prof Vidal vai atualizar o ensino dessa funcao attach?
Obrigada,
Valeria
Valeria Andrade- Mensagens : 94
Data de inscrição : 12/03/2018
Re: Funcao attach ou $?
Olá, Valeria!
Então, eu diria que a resposta depende bastante de como você normalmente usa o R, e como você deve continuar a explorá-lo.
O attach() é uma função extremamente prática e útil, e usá-la em análises simples pode ser feito sem problemas - e por isso eu sempre ensino quando estamos dando os nossos primeiros passos. Por "análise simples" eu poderia dizer algo como: qualquer análise na qual você carrega um único conjunto de dados ao longo do script, e não faz alterações nestes dados dentro do próprio R.
Por outro lado, em scripts mais longos, onde mais de um conjunto de dados é carregado ou ainda onde o conjunto de dados carregado originalmente passa por várias modificações dentro do R (como correções ou alterações nos valores originais da planilha), eu diria que o attach() começa a gerar alguns riscos. Não é que você necessariamente teria problemas, mas uma distração pode gerar um "erro silencioso" - algo que sai errado na análise, mas você não recebe um mensagem de erro.
Então, na prática, o que temos é uma função bem útil e prática, e que é ótima para o aprendizado. Ela é confiável nas situações mais simples de análises, mas pode ser arriscada em situações mais complexas - mas ainda é segura se você tiver bastante atenção na montagem do script.
Acho que é isso. Qualquer coisa continuamos o assunto por aqui, ok?
Então, eu diria que a resposta depende bastante de como você normalmente usa o R, e como você deve continuar a explorá-lo.
O attach() é uma função extremamente prática e útil, e usá-la em análises simples pode ser feito sem problemas - e por isso eu sempre ensino quando estamos dando os nossos primeiros passos. Por "análise simples" eu poderia dizer algo como: qualquer análise na qual você carrega um único conjunto de dados ao longo do script, e não faz alterações nestes dados dentro do próprio R.
Por outro lado, em scripts mais longos, onde mais de um conjunto de dados é carregado ou ainda onde o conjunto de dados carregado originalmente passa por várias modificações dentro do R (como correções ou alterações nos valores originais da planilha), eu diria que o attach() começa a gerar alguns riscos. Não é que você necessariamente teria problemas, mas uma distração pode gerar um "erro silencioso" - algo que sai errado na análise, mas você não recebe um mensagem de erro.
Então, na prática, o que temos é uma função bem útil e prática, e que é ótima para o aprendizado. Ela é confiável nas situações mais simples de análises, mas pode ser arriscada em situações mais complexas - mas ainda é segura se você tiver bastante atenção na montagem do script.
Acho que é isso. Qualquer coisa continuamos o assunto por aqui, ok?
Re: Funcao attach ou $?
Olá, tudo bem?
Aproveitando o gancho sobre o attach...
Estou trabalhando com meus dados e notei uma coisa... Eu dou os comandos à seguir (1° código) e ele não altera essas variáveis para variável qualitativa, permanecendo o mesmo tipo de variável do meu input original. O que pode estar acontecendo? Obs: Pela imagem pode-se ver que ele reconhece as variáveis, entretanto, não as transforma (imagem 1). Ele só está transformando quando uso o segundo código (imagem 2)...
Segue uma imagem da situação do código 1
Segue uma imagem da situação do código 2
Aproveitando, também teria como alterar todas essas variáveis para qualitativas com um comando só, ao invés de ter que dar um comando para cada uma?
Obrigada,
Vanessa
Aproveitando o gancho sobre o attach...
Estou trabalhando com meus dados e notei uma coisa... Eu dou os comandos à seguir (1° código) e ele não altera essas variáveis para variável qualitativa, permanecendo o mesmo tipo de variável do meu input original. O que pode estar acontecendo? Obs: Pela imagem pode-se ver que ele reconhece as variáveis, entretanto, não as transforma (imagem 1). Ele só está transformando quando uso o segundo código (imagem 2)...
- Código:
genotipo<-read.table("C:/Users/Vanessa/Google Drive/Vanessa Escolano/Artigo LES/Regressao/SNPs_genotipos2.txt", h=T)
attach(genotipo)
Grupo <- as.factor(Grupo)
Sexo <- as.factor(Sexo)
SNP1_G <- as.factor(SNP1_G)
SNP1_A <- as.factor(SNP1_A)
SNP1_AA <- as.factor(SNP1_AA)
SNP1_AG <- as.factor(SNP1_AG)
SNP1_GG <- as.factor(SNP1_GG)
- Código:
genotipo<-read.table("C:/Users/Vanessa/Google Drive/Vanessa Escolano/Artigo LES/Regressao/SNPs_genotipos2.txt", h=T)
genotipo$Grupo <- as.factor(Grupo)
genotipo$Sexo <- as.factor(Sexo)
genotipo$SNP1_G <- as.factor(SNP1_G)
genotipo$SNP1_A <- as.factor(SNP1_A)
genotipo$SNP1_AA <- as.factor(SNP1_AA)
genotipo$SNP1_AG <- as.factor(SNP1_AG)
genotipo$SNP1_GG <- as.factor(SNP1_GG)
Segue uma imagem da situação do código 1
Segue uma imagem da situação do código 2
Aproveitando, também teria como alterar todas essas variáveis para qualitativas com um comando só, ao invés de ter que dar um comando para cada uma?
Obrigada,
Vanessa
Vanessa Escolano Maso- Mensagens : 3
Data de inscrição : 20/03/2018
Idade : 29
Localização : Ribeirão Preto - SP
Re: Funcao attach ou $?
Oi, Vanessa!
Então, você acabou de tropeçar em uma da situações nas quais o attach pode nos fazer errar se não prestarmos atenção.
Considerando o seu código 1, o que acontece é que quando você usa um comando como:
Você está fazendo duas coisas. O as.factor() está "chamando" a variável Grupo que faz parte do seu objeto genototipo - porque você usou attach(), então o R reconhece Grupo como algo que existe na memória.
Mas quando você salva o resultado do que fez (ou seja, quando você pega isso e coloca em "Grupo<-"), você cria um objeto chamado Grupo! :O
Então, no código 1, você agora tem Grupo duas vezes: genotipo$Grupo está dentro do objeto genotipo; e Grupo é um objeto à parte.
Se você não usasse um str() ou summary(), poderia continuar trabalhando sem nem perceber isso, e e possível que nada de errado fosse acontecer, pois todas as vezes que você fosse chamar a variável Grupo, iria chamar apenas com o nome mesmo, e o R chamaria a versão objeto, que passou pela transformação do as.factor.
Então não chega a ser um problemão, mas ilustra um pouco as questões que eu levantei, se usar o attach() em situações nas quais você altera as variáveis na planilha. Na prática isso pode não afetar em nada as suas análises, mas seria sim possível fazer alguma confusão sem querer...
No seu código 2, você alterou diretamente a variável Grupo (e as demais, o mesmo vale para todas) dentro de genotipo. Então o que acontece agora é que Grupo continua a existir apenas como parte do objeto genotipo, e tudo continua igual e funcionando normalmente como consequência do seu attach().
Em resumo: se eu crio um objeto com o mesmo nome que uma coluna de um conjunto de dados que passou por attach(), o objeto é algo superior na hierarquia do R, e ele passa a responder no lugar do nome da variável.
Acho que é isso!
Então, você acabou de tropeçar em uma da situações nas quais o attach pode nos fazer errar se não prestarmos atenção.
Considerando o seu código 1, o que acontece é que quando você usa um comando como:
- Código:
Grupo <- as.factor(Grupo)
Você está fazendo duas coisas. O as.factor() está "chamando" a variável Grupo que faz parte do seu objeto genototipo - porque você usou attach(), então o R reconhece Grupo como algo que existe na memória.
Mas quando você salva o resultado do que fez (ou seja, quando você pega isso e coloca em "Grupo<-"), você cria um objeto chamado Grupo! :O
Então, no código 1, você agora tem Grupo duas vezes: genotipo$Grupo está dentro do objeto genotipo; e Grupo é um objeto à parte.
Se você não usasse um str() ou summary(), poderia continuar trabalhando sem nem perceber isso, e e possível que nada de errado fosse acontecer, pois todas as vezes que você fosse chamar a variável Grupo, iria chamar apenas com o nome mesmo, e o R chamaria a versão objeto, que passou pela transformação do as.factor.
Então não chega a ser um problemão, mas ilustra um pouco as questões que eu levantei, se usar o attach() em situações nas quais você altera as variáveis na planilha. Na prática isso pode não afetar em nada as suas análises, mas seria sim possível fazer alguma confusão sem querer...
No seu código 2, você alterou diretamente a variável Grupo (e as demais, o mesmo vale para todas) dentro de genotipo. Então o que acontece agora é que Grupo continua a existir apenas como parte do objeto genotipo, e tudo continua igual e funcionando normalmente como consequência do seu attach().
Em resumo: se eu crio um objeto com o mesmo nome que uma coluna de um conjunto de dados que passou por attach(), o objeto é algo superior na hierarquia do R, e ele passa a responder no lugar do nome da variável.
Acho que é isso!
Re: Funcao attach ou $?
Puxa, acabei de ter esse problema em uma análise que eu estava tentando rodar de modelo misto! Eu não estava conseguindo alterar a variável resposta e não me dei conta que era por causa do attach! Exatamente isso - eu criei um objeto com o mesmo nome da variável!! Ainda bem que eu li essa discussão!
GildaV- Mensagens : 2
Data de inscrição : 04/10/2017
Re: Funcao attach ou $?
GildaV escreveu:Puxa, acabei de ter esse problema em uma análise que eu estava tentando rodar de modelo misto! Eu não estava conseguindo alterar a variável resposta e não me dei conta que era por causa do attach! Exatamente isso - eu criei um objeto com o mesmo nome da variável!! Ainda bem que eu li essa discussão!
Pois é, este é o maior perigo do attach: achar que você alterou uma coluna do data frame, quando na verdade você criou uma nova variável...
Mas que bom que você acompanhou a discussão!
Re: Funcao attach ou $?
Obrigada Prof Marcos
Valeria Andrade- Mensagens : 94
Data de inscrição : 12/03/2018
Tópicos semelhantes
» Função attach
» Attach() - usos e problemas
» Problema com a função attach
» Dúvida sobre o attach() - webnário 2, turma 4
» Problemas no attach para exemplo "pratica1.txt"
» Attach() - usos e problemas
» Problema com a função attach
» Dúvida sobre o attach() - webnário 2, turma 4
» Problemas no attach para exemplo "pratica1.txt"
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos
|
|