[R-br] Função para remover colunas
Éder Comunello
comunello.eder em gmail.com
Segunda Fevereiro 29 10:06:12 BRT 2016
Bom dia,
Elias, particularmente eu acredito que os colegas propuseram soluções
melhores, mas para seu código funcionar você deve definir o "ambiente" onde
a função será executada. Alterei seu código pra testar:
### <code r>
remove.variables <- function(dataset.name, vars.to.remove)
{
# scan the variables to be removed
for (x in 1 : length(vars.to.remove))
{
# transform command.Remove in "data$variable <- NULL"
command.Remove <- paste(dataset.name,"$", vars.to.remove[x], " <-
NULL", sep="")
# execute the command
print(command.Remove)
eval(parse(text=command.Remove), envir=.GlobalEnv)
}
}
df <- get(data(mtcars))
names(df)
# [1] "mpg" "cyl" "disp" "hp" "drat" "wt" "qsec" "vs" "am"
"gear" "carb"
remove.variables("df", c("mpg", "hp"))
# [1] "df$mpg <- NULL"
# [1] "df$hp <- NULL"
names(df)
# [1] "cyl" "disp" "drat" "wt" "qsec" "vs" "am" "gear" "carb"
### </code>
================================================
Éder Comunello
Agronomist (UEM), MSc in Environ. Sciences (UEM)
DSc in Agricultural Systems Engineering (USP/Esalq)
Brazilian Agricultural Research Corporation (Embrapa)
Dourados, MS, Brazil |<O>|
================================================
GEO, -22.2752, -54.8182, 408m
UTC-04:00 / DST: UTC-03:00
Em 29 de fevereiro de 2016 08:26, Pedro Emmanuel Alvarenga Americano do
Brasil <emmanuel.brasil em gmail.com> escreveu:
> Engraçado... eu usaria uma coisa do tipo
>
>
> 1. remove.variables <- function(dataset.name, vars.to.remove)
> 2. {
> 3. output <- dataset.name[,-which(names(dataset.name) %in%
> vars.to.remove]
> 4. output
> 5. }
>
> dataset <- remove.variable(dataset,c("var1","var2","var3"))
>
> Pedro Brasil
>
> Em 28 de fevereiro de 2016 08:55, Elias Carvalho <ecacarva em gmail.com>
> escreveu:
>
>> Ola Pessoal
>>
>> Para facilitar a vida de um usuário leigo, eu criei uma função para
>> excluir as colunas de uma tabela, conforme código abaixo:
>>
>>
>> 1. remove.variables <- function(dataset.name, vars.to.remove)
>> 2. {
>> 3. # scan the variables to be removed
>> 4. for (x in 1 : length(vars.to.remove))
>> 5. {
>> 6. # transform command.Remove in "data$variable <- NULL"
>> 7. command.Remove <- paste(dataset.name,"$",vars.to.remove[x], "
>> <- NULL",sep="")
>> 8. # execute the command
>> 9. command.Remove <- eval(parse(text=command.Remove))
>> 10. } # for (x in 1 : length(vars.to.remove))
>> 11. } # remove.variables <- function(dataset.name, vars.to.remove)
>>
>>
>> Fazendo um teste local, ou seja, executando o procedimento abaixo com as
>> variáveisdataset.name, vars.to.remove carregadas respectivamente com o
>> nome do meu data frame "data" e com o nome de duas variáveis "var1" e
>> "var5" a serem removidas e executando da linha 2 a 11 tudo tunciona bem e
>> as colunas são removidas.
>>
>> dataset.name <- "data"
>> vars.to.remove<-c("var1", "var5")
>>
>> No entanto se carrego a função e executo os procedimentos abaixo em outro
>> script, a função é executada sem erro, mas não remove nenhuma coluna do
>> data frame:
>>
>> vars.to.remove = c("var1", "var5")
>> dataset.name = "data"
>>
>> remove.variables(dataset.name, vars.to.remove)
>>
>> Eu acredito que tem a ver com o ambiente, acesso global algo assim mas
>> não estou achando a solução.
>>
>> Agradeço se aguem puder me ajudar.
>>
>> --
>> Best regards... 8^)
>>
>> “The mind that is open to new ideas never come back
>> to its original size” *Albert Einstein*
>>
>>
>> _____________________________________________
>> Prof. Elias César Araújo de Carvalho
>> CV: http://lattes.cnpq.br/4248328961021251
>>
>> _______________________________________________
>> 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.
>
-------------- Próxima Parte ----------
Um anexo em HTML foi limpo...
URL: <http://listas.inf.ufpr.br/pipermail/r-br/attachments/20160229/382fbc71/attachment.html>
Mais detalhes sobre a lista de discussão R-br