Encontrar o que precisa em R: focado pesquisa dentro R e todos os (mais de 3.500) Pacotes CRAN

StackOverflow https://stackoverflow.com/questions/1812702

  •  06-07-2019
  •  | 
  •  

Pergunta

Muitas vezes, em R, há uma dúzia de funções espalhados por tantos pacotes -. Todos os que têm a mesma finalidade, mas é claro diferem em precisão, desempenho, documentação, rigor teórico, e assim por diante

Como você localizar estes -? A partir de dentro R e até mesmo entre os Pacotes de CRAN que você não tenha instalado

Assim, por exemplo: o plot função genérica. Definir carrapatos secundárias é muito mais fácil usar uma função fora do pacote base:

minor.tick(nx=n, ny=n, tick.ratio=n)

É claro plot está em R core, mas minor.tick não é, é realmente no Hmisc .

É claro, que não aparecem na documentação para plot , nem deve esperar que ela.

Outro exemplo: argumentos de entrada de dados para plot pode ser fornecida por um objeto retornado da função hexbin , uma vez mais, esta função é de uma biblioteca de fora do núcleo R.

O que seria ótimo, obviamente, é uma forma de programação para reunir estes argumentos da função das várias bibliotecas e colocá-los em um único namespace?

* edit: (tentando re-state meu exemplo acima mais claramente :) os argumentos para plot fornecido no núcleo R, por exemplo, definir a frequência eixo carrapato são xaxp / yaxp; no entanto, também se pode definir a / t / f através de um fora função do pacote base, novamente, como na função minor.tick do pacote Hmisc - mas você não saberia que só de olhar para a assinatura do método trama . Existe uma função meta em R para isso? *

Até agora, como eu se deparar com eles, eu fui reunindo-os manualmente, cada conjunto reunidos em um único TextMate trecho (juntamente com as importações de biblioteca de atendimento) . Esta não é tão difícil ou demorado, mas eu só posso atualizar meu trecho como eu descobrir sobre esses argumentos / parâmetros adicionais. Existe um R maneira canônica de fazer isso, ou pelo menos uma maneira mais fácil?

Apenas no caso de que não estava claro, eu não estou falando sobre o caso em que vários pacotes fornecem funções voltadas para a mesma estatística ou vista (por exemplo, 'boxplot' no pacote base; 'boxplot.matrix' em gplots; e 'bplots' em Rlab). O que eu estou falando é o caso em que o nome da função é o mesmo em dois ou mais pacotes.

Foi útil?

Solução

O pacote " sos " é um excelente recurso. É interface primária é o " findFn " comando, que aceita uma string (seu termo de busca) e verifica as entradas "função" no banco de dados do site de busca de Johnathan Baron, e retorna as entradas que contêm o termo de pesquisa na um quadro de dados (da classe "findFn").

As colunas deste quadro de dados são: Conde , MaxScore , TotalScore , Package , função , Data , Score , Descrição e Fazer a ligação . Clicando em "Link" na linha de qualquer entrada vai puxar imediatamente a página de ajuda.

Um exemplo: suponha que você queria encontrar todos os filtros de convolução em todos os pacotes 1800+ R.

library(sos)
cf = findFn("convolve") 

Esta consulta vai olhar o termo "convolve", em outras palavras, que não tem que ser o nome da função.

Keying em retornos "CF" uma tabela HTML de todas as correspondências encontradas (23 nesse caso). Esta tabela é um de HTML do quadro de dados que mencionei logo acima. O que é particularmente conveniente é que cada coluna ( "Count", "MaxScore", etc.) é classificável, clicando no cabeçalho da coluna, para que possa ver os resultados, "Score", por "Nome do pacote", etc.

(Como um aparte:. Ao executar essa consulta exata, um dos resultados foi a função "panel.tskernel" em um pacote chamado "latticeExtra" Eu não estava ciente este pacote tinha quaisquer filtros de séries temporais nele e eu duvido i teria descoberto o contrário.

Outras dicas

A sua pergunta não é fácil de responder. Não há uma função definitiva.

formals é a função que dá os nome argumentos para uma função e seus padrões em uma lista com o nome, mas você pode ter sempre argumentos variáveis ??através do parâmetro ... e escondidos argumentos nomeados com função hadArg incorporado. Para obter uma lista das pessoas que você teria que usar um getAnywhere e, então, verificar a expressão para a hasArg. Eu não posso pensar de uma maneira automática de fazê-lo sozinho. Isto é, se as funções argumentos ocultas não são documentados.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top