José Cláudio,

De fato o R tem uma "bagagem histórica" e nem tudo nele é ortogonal (no sentido de programação) nem totalmente orientado a objetos.

IMNSHO, acho que a abordagem que, em princípio, lhe deixa mais apreensivo seria a mais apropriada (e eventualmente após um teste de fogo no pacote, uma negociação poderia ser feito com os desenvolvedores do pacote base/stats do R para migrar essas funções para lá [que me parece o lugar "certo" para ela]), e uma ação intermediária poderia ser sobrepor essas funções no seu pacote e assegurar-se que se o(s) objeto(s) não fossem do pacote fdt a função do pacote base fosse chamada (na chamada do pacote você teria a famosa mensagem de masking dos objetos que você implementasse, mas isso já é a vida como ela é no [atual] R.

meus 0,01999999...

[]s
--
Cesar Rabak



2014-09-01 17:43 GMT-03:00 Jose Claudio Faria <joseclaudio.faria@gmail.com>:
Olá pessoal,

Gostaria de fazer uma consulta ao pessoal mais ligado ao
desenvolvimento de soluções para o R.

Estamos trabalhando para fazer o pacote fdth
(http://cran.r-project.org/web/packages/fdth/index.html) mais
genérico, flexível e por conseguinte mais útil aos usuários.

Entre as novidades:
- os métodos tabulares e gráficos foram estendidos para as variáveis
categóricas com as novas opções (barchart, poligon e dotchart para
qualquer coluna da fdt assim como o gráfico de pareto) para as
categóricas;

- permite a criação de tabelas de distribuição de frequências (fdt)
para variáveis contínuas e categóricas com um mínimo de argumentos
baseado em uma fdt prévia existente na literatura (ou seja, você não
conhece - de fato - o vetor da variável, apenas as frequências);

- cálculo de medidas de tendência central (média e mediana) e posição
(quantil genérico) a partir de uma fdt.

Para gerar uma tabela de uma variável contínua (por exemplo) à partir
do vetor de frequências é bem simples:
> tb <- make.fdt(x=vetor_freq, start, end)

Uma vez criado 'tb' irá pertencer a classe 'fdt'.
Foram implementando métodos para as funções genéricas (mean, median,
quantile) para a classe 'fdt'. por exemplo:
> mean(tb)

> median(tb)

> quantile(tb, i=10, probs=seq(0, 1, .1) para calcular o 10 percentil.

Minha questão é a seguinte, as funções 'var' e 'sd' não são genéricas.
Assim não posso implementar o métodos: var.fdt e sd.fdt para chamar assim:
> var(tb)

> sd(tb)

Poderia se criasse nova funções 'var' e 'sd' genéricas no pacote.
Contudo, fico um pouco apreensivo com esta abordagem.

Qual seria uma opção razoável para este caso?
A mais simples seria escrever as funções 'var.fdt' e 'sd.fdt' e o
usuário teria que usar assim:

> var.fdt(x=tb)

> sd.fdt(x=tb)

Mas foge do padrão do restante do pacote que realmente é orientado a objetos S3.

Nunca tinha me deparado com uma caso desses.

Sugestões são muito bem vindas...

Ab,
///\\\///\\\///\\\///\\\///\\\///\\\///\\\///\\\
Jose Claudio Faria
Estatistica
UESC/DCET/Brasil
joseclaudio.faria at gmail.com
Telefones:
55(73)3680.5545 - UESC
55(73)9966.9100 - VIVO
55(73)9100.7351 - TIM
55(73)8817.6159 - OI
///\\\///\\\///\\\///\\\///\\\///\\\///\\\///\\\
_______________________________________________
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.