[R-br] Como ver o que uma função faz
Cesar Rabak
cesar.rabak em gmail.com
Sexta Setembro 1 21:56:21 -03 2017
Pedro,
Acho que nesse caso a forma mais prática seria você baixar o código do
pacote e ver a dita cuja diretamente. . .
2017-09-01 9:38 GMT-03:00 Pedro Emmanuel Alvarenga Americano do Brasil via
R-br <r-br em listas.c3sl.ufpr.br>:
> library(rms)
> rms:::Function.cph
> rms:::Function.rms
>
> Pacote errado e é uma função aninhada em outra.
>
> Pedro Brasil
>
> Em 25 de agosto de 2017 14:53, Tiago Fragoso <fragoso2718 em gmail.com>
> escreveu:
>
>> Olá,
>>
>> Essa função não aparece nem pra mim nem pro Marcus quando usamos
>> methods(), capaz que ela não esteja em versões posteriores do Hmisc.
>>
>> O asterisco na saida do methods() indica uma função não exportada. Nesse
>> caso, Hmisc:::Function.cph deveria achar a função. Note os três ":".
>>
>> 2017-08-25 14:10 GMT-03:00 Pedro Emmanuel Alvarenga Americano do Brasil
>> via R-br <r-br em listas.c3sl.ufpr.br>:
>>
>>> Ei Marcus,
>>>
>>> No meu caso, eu gostaria de ver a Function.cph, mas ela aparece com um
>>> asterisco que eu não sei o que é. Então...
>>>
>>> > Function.cph
>>> Error: object 'Function.cph' not found
>>> > Function.cph*
>>> +
>>>
>>> E a função não aparece.
>>>
>>> Pedro Brasil
>>>
>>> Em 25 de agosto de 2017 13:37, Marcus Nunes <marcus.nunes em gmail.com>
>>> escreveu:
>>>
>>>> Use `methods` para encontrar os métodos da função desejada:
>>>>
>>>> > methods(Function)
>>>> [1] Function.areg.boot Function.transcan
>>>> see '?methods' for accessing help and source code
>>>>
>>>> Esta função tem dois métodos associados a ela: Function.areg.boot e
>>>> Function.transcan. Agora é só pedir pra ver o código fonte do método que te
>>>> interessa:
>>>>
>>>> > Function.areg.boot
>>>> function (object, type = c("list", "individual"), ytype =
>>>> c("transformed",
>>>> "inverse"), prefix = ".", suffix = "", pos = -1, ...)
>>>> {
>>>> type <- match.arg(type)
>>>> ytype <- match.arg(ytype)
>>>> if (missing(type) && !(missing(prefix) & missing(suffix) &
>>>> missing(pos)))
>>>> type <- "individual"
>>>> fit <- object$fit
>>>> k <- length(fit)
>>>> nam <- names(fit)
>>>> g <- vector("list", k)
>>>> xtype <- object$xtype
>>>> typey <- object$ytype
>>>> catl <- object$cat.levels
>>>> names(g) <- nam
>>>> for (i in 1:k) {
>>>> typ <- if (i == 1)
>>>> typey
>>>> else xtype[i - 1]
>>>> if (typ == "c") {
>>>> if (i == 1 && ytype == "inverse")
>>>> stop("currently does not handle ytype=\\"inverse\\"
>>>> when y is categorical")
>>>> h <- function(x, trantab) {
>>>> if (is.factor(x))
>>>> x <- as.character(x)
>>>> trantab[x]
>>>> }
>>>> w <- fit[[i]]$y
>>>> names(w) <- catl[[nam[i]]]
>>>> formals(h) <- list(x = numeric(0), trantab = w)
>>>> }
>>>> else {
>>>> h <- function(x, trantab) {
>>>> s <- !is.na(x)
>>>> res <- rep(NA, length(x))
>>>> res[s] <- approxExtrap(trantab, xout = x[s])$y
>>>> res
>>>> }
>>>> fiti <- fit[[i]]
>>>> formals(h) <- list(x = numeric(0), trantab = if (i ==
>>>> 1 && ytype == "transformed") list(x = fiti[[2]],
>>>> y = fiti[[1]]) else fiti)
>>>> }
>>>> g[[i]] <- h
>>>> }
>>>> if (type == "list")
>>>> return(g)
>>>> fun.name <- paste(prefix, nam, suffix, sep = "")
>>>> for (i in 1:k) assign(fun.name[i], g[[i]], pos = pos)
>>>> invisible(fun.name)
>>>> }
>>>> <environment: namespace:Hmisc>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>> --
>>>> Marcus Nunes
>>>> Professor Adjunto
>>>> Universidade Federal do Rio Grande do Norte
>>>> Centro de Ciências Exatas e da Terra
>>>> Departamento de Estatística
>>>> Laboratório de Estatística Aplicada
>>>> marcus.nunes em ccet.ufrn.br
>>>> http://marcusnunes.me/
>>>>
>>>>
>>>> 2017-08-25 13:21 GMT-03:00 Pedro Emmanuel Alvarenga Americano do Brasil
>>>> via R-br <r-br em listas.c3sl.ufpr.br>:
>>>>
>>>>> Amigos de R,
>>>>>
>>>>> Gostaria de poder ver a sequencia de operações que uma função faz. Na
>>>>> maioria das funções, basta digitar o nome da função no console, por exemplo
>>>>>
>>>>> > trimws
>>>>> function (x, which = c("both", "left", "right"))
>>>>> {
>>>>> which <- match.arg(which)
>>>>> mysub <- function(re, x) sub(re, "", x, perl = TRUE)
>>>>> if (which == "left")
>>>>> return(mysub("^[ \t\r\n]+", x))
>>>>> if (which == "right")
>>>>> return(mysub("[ \t\r\n]+$", x))
>>>>> mysub("[ \t\r\n]+$", mysub("^[ \t\r\n]+", x))
>>>>> }
>>>>> <bytecode: 0x0000000002fdbd78>
>>>>> <environment: namespace:base>
>>>>>
>>>>> No entanto, algumas funções não seguem essa regra e eu não sei como
>>>>> fazer. Por exemplo
>>>>>
>>>>> library(Hmisc)
>>>>> > Function
>>>>> function (object, ...)
>>>>> UseMethod("Function")
>>>>> <environment: namespace:Hmisc>
>>>>>
>>>>> Alguma dica pra conseguir enxergar as operações dessa função?
>>>>>
>>>>> Abraço forte,
>>>>>
>>>>> Pedro Brasil
>>>>>
>>>>> _______________________________________________
>>>>> 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.
>>>
>>
>>
>
> _______________________________________________
> 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/20170901/a4f5ee00/attachment.html>
Mais detalhes sobre a lista de discussão R-br