[R-br] Passando um objeto para "character"

Pedro Emmanuel Alvarenga Americano do Brasil emmanuel.brasil em gmail.com
Sexta Setembro 9 11:38:54 BRT 2016


Ola amigos de R,

Estou tentando fazer um função para um plot mas sem obrigar que o usuário
chame as variáveis de um banco entre aspas.  Isso porque no conjunto de
funções hierarquizadas, todas as outras não precisam que os argumentos
sejam character, vai facilitar muito inclusive pra documentar. Eu achei a
função Hmisc::Cs que faz o que eu gostaria, mas não gostaria de criar uma
dependencia do Hmisc apenas por conta dessa função. Ao mesmo tempo, eu não
consigo saber o que tem dentro da Cs() por que quando digito Cs no console,
esse retorna apenas o namespace.  Eu gostaria de clonar a Cs ou dar um
outro jeito de não obrigar que usuario entrasse as variáveis como
character.  Eu dei uma olhada nas fuçoes parse, deparse e substitute no
pacote base mas não consegui me desenrolar.

Assim funciona

mydata <- data.frame(Var1 = rnorm(10, 1 , 2), Var2 = rnorm(10, 2, 2))
myplot <- function(x, y, data){
  plot(data[ ,  c(x, y)])
}
myplot("Var1", "Var2", mydata)

# Mas eu gostaria de algo assim...

myplot <- function(x, y, data){
  if ( is.character(x) & is.character(y)){
    plot(data[ ,  c(x, y)])
  } else { # essa parte não funciona
     plot(data[ ,  Hmisc::Cs(x, y)]) # essa é a parte que estou enrolado pq
não quero depender de Hmisc
}
myplot(Var1, Var2, mydata)

Eu pensei numa coisa do tipo ...

with(mydata, plot(Var1 , Var2))

 Mas dentro da função não funciona...

myplot <- function(x, y, data){
  if ( is.character(x) & is.character(y)){
    plot(data[ ,  c(x, y)])
  } else {
    with(data, plot(x, y))
  }
}
myplot( Var1, Var2, mydata)

Abraços fortes,

Pedro Brasil
-------------- Próxima Parte ----------
Um anexo em HTML foi limpo...
URL: <http://listas.inf.ufpr.br/pipermail/r-br/attachments/20160909/7b8f9b1e/attachment.html>


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