Função para remover colunas

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

Não é mais fácil usar subset() e o parâmetro select ? head(ChickWeight) head(subset(ChickWeight, select = -c(Time, Chick))) 2016-02-28 8:55 GMT-03:00 Elias Carvalho <ecacarva@gmail.com>:
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@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.

Ou, dependendo da intenção: head(ChickWeight) ChickWeight$weight <- NULL head(ChickWeight) Espero que ajude. Leonardo Ferreira Fontenelle[1] Em Dom 28 fev. 2016, às 11:59, Rodrigo Coster escreveu:
Não é mais fácil usar subset() e o parâmetro select ?
head(ChickWeight) head(subset(ChickWeight, select = -c(Time, Chick)))
2016-02-28 8:55 GMT-03:00 Elias Carvalho <ecacarva@gmail.com>:
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[2], 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[3],"$",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[4], vars.to.remove)
Fazendo um teste local, ou seja, executando o procedimento abaixo com as variáveisdataset.name[5], 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[6] <- "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[7] = "data"
remove.variables(dataset.name[8], 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@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@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.
Links: 1. http://lattes.cnpq.br/9234772336296638 2. http://dataset.name/ 3. http://dataset.name/ 4. http://dataset.name/ 5. http://dataset.name/ 6. http://dataset.name/ 7. http://dataset.name/ 8. http://dataset.name/

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@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@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.

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@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@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@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@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.

Olá O colega já lhe deu a solução, mas se é pra facilitar a vida do usuário leigo segue sugestão (df = data.frame( a=letters[10], b=LETTERS[10], c=seq(10), d=letters[1:10], e=letters[1:10] )) ## -------- exemplo1 ---------------- remove.var = function(dataname, vars) { dataname[vars] <- list(NULL) return(dataname) }##end function vars = c("a", "b") remove.var(df, vars) ## -------- exemplo2 ---------------- remove.var = function(dataname, vars) { return(dataname[, ! names(dataname) %in% vars, drop = FALSE]) }##end function vars = c("a", "b") remove.var(df, vars) saudações Em 28/02/2016 08:55, Elias Carvalho 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 <http://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 <http://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 <http://dataset.name/>, vars.to.remove)
Fazendo um teste local, ou seja, executando o procedimento abaixo com as variáveisdataset.name <http://dataset.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 <http://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 <http://dataset.name/> = "data"
remove.variables(dataset.name <http://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@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.
participantes (6)
-
Elias Carvalho
-
Leonardo Ferreira Fontenelle
-
Pedro Emmanuel Alvarenga Americano do Brasil
-
Rodrigo Coster
-
salah
-
Éder Comunello