11 agosto, 2021
S
, C
, FORTRAN
) R
;R
;R
(Melhor escolha!);Assim, esse ambiente inclui:
R
expression()
, eval()
, quote()
, substitute()
, bquote()
, desparse()
);vetor <- TRUE; typeof(vetor) ## [1] "logical" vetor[2] <- 1; typeof(vetor) ## [1] "double" vetor[3] <- "1"; typeof(vetor); vetor ## [1] "character" ## [1] "1" "1" "1"
O R
não é uma linguagem estritamente funcional, pois dentre outras situações, se entende que o estilo estritamente funcional apresenta:
x <- 1:10 media <- function(x) mean(x) media(x) ## [1] 5.5
fpura <- function(x) { if (!is.numeric(x)) stop("x deve ser numérico") x + 1 } fpura(x = 2) ## [1] 3
rnorm(n = 3) ## [1] -0.42782752 -0.38515145 0.05923715 rnorm(n = 3) ## [1] -0.2435890 -0.2996528 0.1943401
O R
pode apresentar condições mutáveis:
# Criamos um vetor e associamos ao nome 'x' x <- c(1, 2, 3) # Vejamos o identificador de memória lobstr::obj_addr(x) # > "0xcf09be4708" # Modificando no local x[2] <- 4; x # [1] 1 4 3 # Mesmo modificando o objeto, o identificador eh o mesmo lobstr::obj_addr(x) # > "0xcf09be4708"
> # Criando um nome "n" associado a um objeto 10 no escopo da funcao > n <- 10 > > # Criando um nome "funcao" associado a um objeto que eh uma funcao > funcao <- function() { + print(n) + } > > # Imprimindo 'funcao' > funcao() ## [1] 10
> # Criando n > n <- 10 > lobstr::obj_addr(n) # Ident do objeto ## [1] "0x723f358" > #Funcao > funcao <- function() { + print(n) # Imprimindo n + n <- 15 # Criando n + print(n) # Imprimindo n + } > # Imprimindo 'funcao' > funcao() ## [1] 10 ## [1] 15 > # Imprimindo 'n' > n; lobstr::obj_addr(n) # Identificador do objeto ## [1] 10 ## [1] "0x723f358"
> # Criando n > n <- 10 > lobstr::obj_addr(n) # Identificador do objeto ## [1] "0x10ba4f88" > # Criando funcao > funcao <- function() { + # Imprimindo n + print(n) + # Superatribuicao + n <<- 15 + # Imprimindo n + print(n) + } > # Imprimindo 'funcao' > funcao() ## [1] 10 ## [1] 15 > # Imprimindo n > n; lobstr::obj_addr(n) # Ident do objeto ## [1] 15 ## [1] "0x10ba4ea8"
preguicoso <- function(a, b = faux()) a * 100 preguicoso(4)
## [1] 400
> # Funcao anonima > function(x) x + 1 # 1ª forma ## function(x) x + 1 > \(x) x + 1 # 2ª forma (>= R 4.1) ## \(x) x + 1 > # Funcao associado a um nome > fx <- function(x) x + 1 > # Funcao como argumento de outra funcao > x <- cbind(1:10) > apply(x, 1, \(x) x + 1) ## [1] 2 3 4 5 6 7 8 9 10 11 > # Operador binario (Pipe nativo) > 1:10 |> mean() ## [1] 5.5
# Objeto "data.frame" objPOO <- data.frame(a = 1, b = "1", c = TRUE) # Objeto "data.frame" eh um objeto POO? is.object(objPOO)
## [1] TRUE
# Vetor de comprimento 10 objBASE <- 1:10 # O vetor eh um objeto POO? is.object(objBASE)
## [1] FALSE
diamonds <- ggplot2::diamonds summary(diamonds$carat)
## Min. 1st Qu. Median Mean 3rd Qu. Max. ## 0.2000 0.4000 0.7000 0.7979 1.0400 5.0100
summary(diamonds$cut)
## Fair Good Very Good Premium Ideal ## 1610 4906 12082 13791 21551