18 agosto, 2021
typeof
) "closure"
, com chamada UseMethod
utils::isS3stdGeneric()
sloop::ftype()
# Funcoes do tipo "closure" que nao pertencem ao sistema S3 utils::isS3stdGeneric(data) ## [1] FALSE sloop::ftype(data) ## [1] "function" # Funcao generica S3 em funcoes do tipo "closure" utils::isS3stdGeneric(mean) ## mean ## TRUE sloop::ftype(mean) ## [1] "S3" "generic"
# funcoes primitivas e internas que nao pertencem ao sistema S3 utils::isS3stdGeneric(inherits) ## [1] FALSE sloop::ftype(inherits) ## [1] "internal" #----- utils::isS3stdGeneric(unclass) ## [1] FALSE sloop::ftype(unclass) ## [1] "primitive" # funcoes genericas do sistema S3 que sao primitivas e internas utils::isS3stdGeneric(length) ## [1] FALSE sloop::ftype(length) ## [1] "primitive" "generic" #-- utils::isS3stdGeneric(unlist) ## [1] FALSE sloop::ftype(unlist) ## [1] "internal" "generic"
mean
## function (x, ...) ## UseMethod("mean") ## <bytecode: 0x0000000008622dd8> ## <environment: namespace:base>
.S3PrimitiveGenerics
:.S3PrimitiveGenerics ## [1] "anyNA" "as.character" "as.complex" "as.double" ## [5] "as.environment" "as.integer" "as.logical" "as.call" ## [9] "as.numeric" "as.raw" "c" "dim" ## [13] "dim<-" "dimnames" "dimnames<-" "is.array" ## [17] "is.finite" "is.infinite" "is.matrix" "is.na" ## [21] "is.nan" "is.numeric" "length" "length<-" ## [25] "levels<-" "names" "names<-" "rep" ## [29] "seq.int" "xtfrm" # Outras funcoes primitivas (outros_obj_S3_primitivos <- c("[", "[[", "$", "[<-", "[[<-", "$<-")) ## [1] "[" "[[" "$" "[<-" "[[<-" "$<-" # Outras funcoes internas nao primitivas (outros_obj_S3_primitivos <- c("unlist", "cbind", "rbind", "as.vector")) ## [1] "unlist" "cbind" "rbind" "as.vector"
Math
, Grupo Ops
, Grupo Summary
e grupo Complex
Math
:
abs
, sign
, sqrt
, floor
, ceiling
, trunc
, round
, signif
exp
, log
, expm1
, log1p
, cos
, sin
, tan
, cospi
, sinpi
, tanpi
, acos
, asin
, atan
, cosh
, sinh
, tanh
, acosh
, asinh
, atanh
lgamma
, gamma
, digamma
, trigamma
cumsum
, cumprod
, cummax
, cummin
Ops
:
"+"
, "-"
, "*"
, "/"
, "^"
, "%%"
, "%/%"
"&"
, "|"
, "!"
"=="
, "!="
, "<"
, "<="
, ">="
, ">"
Math
, Grupo Ops
, Grupo Summary
e grupo Complex
Summary
:
all
, any
, sum
, prod
, min
, max
, range
Complex
:
Conj
, Im
, Mod
, Re
# Todos os objetos do pacote 'base' todosobj <- objects(baseenv(), all.names = TRUE); # Mostre apenas os primeiros (ver todos remova 'head') head(todosobj)
## [1] "-" "-.Date" "-.POSIXt" "!" "!.hexmode" "!.octmode"
# Quantos objetos no pacote 'base'? length(todosobj)
## [1] 1373
# Quais sao funcoes primitivas? objprimitivos <- todosobj[sapply(todosobj, function(x) is.primitive(get(x, envir = baseenv())))] # Mostre os primeiros (ver todos remova 'head') head(objprimitivos) ## [1] "-" "!" "!=" "$" "$<-" "%%" # Quantos primitivos ('buitin' ou 'special')? length(objprimitivos) ## [1] 204 # Quais sao primitivos genéricos (Sistema S3)? ehPrimitivaGenerica <- function(primitiva) { fprimitiva <- getFunction(primitiva, mustFind = FALSE, where =asNamespace("base")) ehgenerica <- sloop::ftype(fprimitiva) if (any(ehgenerica == "generic")) { TRUE } else FALSE }
# Mostre os primeiros (ver todos remova 'head') head(sapply(objprimitivos, ehPrimitivaGenerica)) ## - ! != $ $<- %% ## TRUE FALSE TRUE TRUE TRUE TRUE # Quantas sao primitivas genericas? sum(sapply(objprimitivos, ehPrimitivaGenerica)) ## [1] 100