Fórmula para calcular el área de un triángulo rectángulo:
A= (y*x)/2
Donde y y x son los dos lados del triángulo que forman el ángulo recto.
#Calculando el área de un triángulo cuyos lados miden 3 cm y 4 cm respectivamente:
A <- (3*4)/2
A
## [1] 6
Una función para calcular el área de triángulos rectángulos:
area.triangulo <- function(lado1, lado2) {
area <- (lado1*lado2)/2
return(area)
}
Prueba con el ejemplo original:
area.triangulo(3,4)
## [1] 6
Otros resultados:
area.triangulo(15,17)
## [1] 127.5
area.triangulo(7.3,5.9)
## [1] 21.535
area.triangulo(96,88)
## [1] 4224
Fórmula para convertir grados centígrados a grados Fahrenheit:
F= (C*1.8) + 32
Donde F= Fahrenheit y C = Centígrados.
Cálculo para convertir 30° centígrados a grados Fahrenheit usando la fórmula:
F <- (30*1.8)+32
F
## [1] 86
Una función para convertir grados centígrados a grados fahrenheit:
fahr <- function(grados) {
res <- (grados*1.8)+32
return(res)
}
Prueba con el ejemplo original:
fahr(30)
## [1] 86
otros resultados:
fahr(20)
## [1] 68
fahr(12)
## [1] 53.6
fahr(53)
## [1] 127.4
Devuelva el valor en función de lo escogido por el usuario. Ejemplo: convertidor(“gramos a libras”,2500)
La fórmula para convertir 1369 gramos a libras
gramos * 0.00220462262
L <- 1369 * 0.00220462262
L
## [1] 3.018128
metros * 0.00062137
M <- 1539 * 0.00062137
M
## [1] 0.9562884
(grados * 1.8)+32
F <- (22 * 1.8)+32
F
## [1] 71.6
Una función que realice las 3 conversiones:
convertidor <- function (funcion= c("gramos a libras", "metros a millas", "centígrados a fahrenheit"), medida) {
if (funcion == "gramos a libras") {
res <- medida * 0.00220462262
return(res)
}
else if (funcion == "metros a millas"){
res2 <- medida * 0.00062137
return(res2)
}
else if (funcion == "centígrados a fahrenheit"){
res3 <- (medida*1.8)+32
return(res3)
}
else{
return("Por favor escoja una opción entre 'gramos a libras', 'metros a millas' o 'centígrados a fahrenheit'")
}
}
Con los ejemplos originales:
convertidor(funcion="gramos a libras",1369)
## [1] 3.018128
convertidor(funcion="metros a millas", 1539)
## [1] 0.9562884
*22 grados centígrados a grados fahrenheit
convertidor("centígrados a fahrenheit", 22)
## [1] 71.6
Otros resultados:
convertidor("gramos a libras", 45699)
## [1] 100.749
convertidor("metros a millas", 267879874)
## [1] 166452.5
convertidor("centígrados a fahrenheit", 145)
## [1] 293
convertidor("minutos a segundos", 25)
## [1] "Por favor escoja una opción entre 'gramos a libras', 'metros a millas' o 'centígrados a fahrenheit'"
instalar <- function(vector) {
for(i in vector) {
if (i %in% installed.packages()[,"Package"] == FALSE){
install.packages(i,repos="http://cran.rstudio.com/");
}
else{
print(paste0("El paquete ", i, " está instalado"))
}
}
sapply(vector,library,character.only=TRUE,quietly=T)
}
paquetes <- c("lubridate", "ggplot2", "purrr")
instalar(paquetes)
## [1] "El paquete lubridate está instalado"
## [1] "El paquete ggplot2 está instalado"
## [1] "El paquete purrr está instalado"
##
## Attaching package: 'lubridate'
## The following object is masked from 'package:base':
##
## date
## Registered S3 methods overwritten by 'ggplot2':
## method from
## [.quosures rlang
## c.quosures rlang
## print.quosures rlang
## $lubridate
## [1] "lubridate" "stats" "graphics" "grDevices" "utils" "datasets"
## [7] "methods" "base"
##
## $ggplot2
## [1] "ggplot2" "lubridate" "stats" "graphics" "grDevices" "utils"
## [7] "datasets" "methods" "base"
##
## $purrr
## [1] "purrr" "ggplot2" "lubridate" "stats" "graphics"
## [6] "grDevices" "utils" "datasets" "methods" "base"
install.packages("dplyr")
## Installing package into '/home/rstudio-user/R/x86_64-pc-linux-gnu-library/3.6'
## (as 'lib' is unspecified)
library("dplyr")
##
## Attaching package: 'dplyr'
## The following objects are masked from 'package:lubridate':
##
## intersect, setdiff, union
## The following objects are masked from 'package:stats':
##
## filter, lag
## The following objects are masked from 'package:base':
##
## intersect, setdiff, setequal, union
bigmac<-read.csv("BigMac.csv",sep=",") %>%
arrange(name,desc(date)) %>%
top_n(1,wt = date)
indice <- function(datos, vector) {
valor1 <- datos %>%
select(dollar_price) %>%
filter(datos$name==vector[1]) %>%
as.numeric()
valor2 <- datos %>%
select(dollar_price) %>%
filter(datos$name==vector[2]) %>%
as.numeric()
return(paste0("El índice de Big Mac para ", vector[1], " es de ", round(valor1,2), " dólares y para ", vector[2], " es de ", round(valor2,2), " dolares."))
}
p <- c("Costa Rica", "Colombia")
indice(bigmac, p )
## [1] "El índice de Big Mac para Costa Rica es de 3.77 dólares y para Colombia es de 3.73 dolares."
a <- c("United States", "Nicaragua")
indice(bigmac, a )
## [1] "El índice de Big Mac para United States es de 5.58 dólares y para Nicaragua es de 3.18 dolares."
split_data <- function(df, train = TRUE,percentage){
length<- nrow(df)
total_row <- length *percentage
split <- 1:total_row
if (train =TRUE){
train_df <- dataframe[split, ]
return(train_df)
} else {
test_df <- df[-split, ]
return(test_df)
}
}
• Indique linea por línea y de manera general cuál es la funcionalidad y propósito de la misma. • Corrija el(los) error(es) que contiene la función. • Compile la función corregida y pruebe con un dataset de su escogencia.
split_data <- function(df, train = TRUE,percentage){
# La primera línea de la función define cuál será el nombre de dicha función (split_data) y cuáles argumentos debe recibir para generar resultados (en este caso 3, el dataframe, una evaluación de un operador lógico y un porcentaje)
length<- nrow(df)
# Esta línea crea un objeto llamado "length" que contiene el número de línea del data frame que reciba la función como primer argumento
total_row <- length *percentage
# En esta línea se crea otro objeto llamado "total_row" que contiene el resultado de multiplicar el número de líneas del dataframe original, almacenado en el objeto "length", por el porcentaje indicado en el tercer argumento de la función.
split <- 1:total_row
# En esta línea se crea un objeto "split" donde se almacena una secuencia de números entre el 1 y el número n almacenado en el objeto "total_row"
if (train =TRUE){
train_df <- dataframe[split, ]
return(train_df)
}
# Esta parte de la función indica que, una vez realizados los pasos anteriores, evalúe el segundo argumento se señaló (valor lógico "TRUE" o "FALSE") y que si se indicó que es TRUE muestre la cantidad de filas equivalente al porcentaje indicado en el tercer argumento de la función, almacenada en el objeto "split" en forma de secuencia.
else {
test_df <- df[-split, ]
return(test_df)
}
# Esta parte de la función indica que si lo que se indicó es "FALSE" muestre los elementos restantes del dataframe luego de eliminar la cantidad de filas equivalente al porcentaje indicado en el tercer argumento de la función, almacenada en el objeto "split" en forma de secuencia."
}
Para que la función corra, sin embargo se deben corregir los errores, a saber:
Unificar el argumento “df” en todas las líneas, ya que si uno de los argumentos es el dataframe (señalado como “df”) debe llamarse igual en todas las líneas para que la función opere de forma correcta.
Para poder comparar, en el “if”, si train fue definido como “TRUE” o como “FALSE” se debe usar “==” en lugar de “=”.
split_data <- function(df, train = TRUE,percentage){
length<- nrow(df)
total_row <- length *percentage
split <- 1:total_row
if (train == TRUE){
train_df <- df[split, ]
return(train_df)
}
else {
test_df <- df[-split, ]
return(test_df)
}
}
split_data(iris, train=FALSE, 0.3)
## Sepal.Length Sepal.Width Petal.Length Petal.Width Species
## 46 4.8 3.0 1.4 0.3 setosa
## 47 5.1 3.8 1.6 0.2 setosa
## 48 4.6 3.2 1.4 0.2 setosa
## 49 5.3 3.7 1.5 0.2 setosa
## 50 5.0 3.3 1.4 0.2 setosa
## 51 7.0 3.2 4.7 1.4 versicolor
## 52 6.4 3.2 4.5 1.5 versicolor
## 53 6.9 3.1 4.9 1.5 versicolor
## 54 5.5 2.3 4.0 1.3 versicolor
## 55 6.5 2.8 4.6 1.5 versicolor
## 56 5.7 2.8 4.5 1.3 versicolor
## 57 6.3 3.3 4.7 1.6 versicolor
## 58 4.9 2.4 3.3 1.0 versicolor
## 59 6.6 2.9 4.6 1.3 versicolor
## 60 5.2 2.7 3.9 1.4 versicolor
## 61 5.0 2.0 3.5 1.0 versicolor
## 62 5.9 3.0 4.2 1.5 versicolor
## 63 6.0 2.2 4.0 1.0 versicolor
## 64 6.1 2.9 4.7 1.4 versicolor
## 65 5.6 2.9 3.6 1.3 versicolor
## 66 6.7 3.1 4.4 1.4 versicolor
## 67 5.6 3.0 4.5 1.5 versicolor
## 68 5.8 2.7 4.1 1.0 versicolor
## 69 6.2 2.2 4.5 1.5 versicolor
## 70 5.6 2.5 3.9 1.1 versicolor
## 71 5.9 3.2 4.8 1.8 versicolor
## 72 6.1 2.8 4.0 1.3 versicolor
## 73 6.3 2.5 4.9 1.5 versicolor
## 74 6.1 2.8 4.7 1.2 versicolor
## 75 6.4 2.9 4.3 1.3 versicolor
## 76 6.6 3.0 4.4 1.4 versicolor
## 77 6.8 2.8 4.8 1.4 versicolor
## 78 6.7 3.0 5.0 1.7 versicolor
## 79 6.0 2.9 4.5 1.5 versicolor
## 80 5.7 2.6 3.5 1.0 versicolor
## 81 5.5 2.4 3.8 1.1 versicolor
## 82 5.5 2.4 3.7 1.0 versicolor
## 83 5.8 2.7 3.9 1.2 versicolor
## 84 6.0 2.7 5.1 1.6 versicolor
## 85 5.4 3.0 4.5 1.5 versicolor
## 86 6.0 3.4 4.5 1.6 versicolor
## 87 6.7 3.1 4.7 1.5 versicolor
## 88 6.3 2.3 4.4 1.3 versicolor
## 89 5.6 3.0 4.1 1.3 versicolor
## 90 5.5 2.5 4.0 1.3 versicolor
## 91 5.5 2.6 4.4 1.2 versicolor
## 92 6.1 3.0 4.6 1.4 versicolor
## 93 5.8 2.6 4.0 1.2 versicolor
## 94 5.0 2.3 3.3 1.0 versicolor
## 95 5.6 2.7 4.2 1.3 versicolor
## 96 5.7 3.0 4.2 1.2 versicolor
## 97 5.7 2.9 4.2 1.3 versicolor
## 98 6.2 2.9 4.3 1.3 versicolor
## 99 5.1 2.5 3.0 1.1 versicolor
## 100 5.7 2.8 4.1 1.3 versicolor
## 101 6.3 3.3 6.0 2.5 virginica
## 102 5.8 2.7 5.1 1.9 virginica
## 103 7.1 3.0 5.9 2.1 virginica
## 104 6.3 2.9 5.6 1.8 virginica
## 105 6.5 3.0 5.8 2.2 virginica
## 106 7.6 3.0 6.6 2.1 virginica
## 107 4.9 2.5 4.5 1.7 virginica
## 108 7.3 2.9 6.3 1.8 virginica
## 109 6.7 2.5 5.8 1.8 virginica
## 110 7.2 3.6 6.1 2.5 virginica
## 111 6.5 3.2 5.1 2.0 virginica
## 112 6.4 2.7 5.3 1.9 virginica
## 113 6.8 3.0 5.5 2.1 virginica
## 114 5.7 2.5 5.0 2.0 virginica
## 115 5.8 2.8 5.1 2.4 virginica
## 116 6.4 3.2 5.3 2.3 virginica
## 117 6.5 3.0 5.5 1.8 virginica
## 118 7.7 3.8 6.7 2.2 virginica
## 119 7.7 2.6 6.9 2.3 virginica
## 120 6.0 2.2 5.0 1.5 virginica
## 121 6.9 3.2 5.7 2.3 virginica
## 122 5.6 2.8 4.9 2.0 virginica
## 123 7.7 2.8 6.7 2.0 virginica
## 124 6.3 2.7 4.9 1.8 virginica
## 125 6.7 3.3 5.7 2.1 virginica
## 126 7.2 3.2 6.0 1.8 virginica
## 127 6.2 2.8 4.8 1.8 virginica
## 128 6.1 3.0 4.9 1.8 virginica
## 129 6.4 2.8 5.6 2.1 virginica
## 130 7.2 3.0 5.8 1.6 virginica
## 131 7.4 2.8 6.1 1.9 virginica
## 132 7.9 3.8 6.4 2.0 virginica
## 133 6.4 2.8 5.6 2.2 virginica
## 134 6.3 2.8 5.1 1.5 virginica
## 135 6.1 2.6 5.6 1.4 virginica
## 136 7.7 3.0 6.1 2.3 virginica
## 137 6.3 3.4 5.6 2.4 virginica
## 138 6.4 3.1 5.5 1.8 virginica
## 139 6.0 3.0 4.8 1.8 virginica
## 140 6.9 3.1 5.4 2.1 virginica
## 141 6.7 3.1 5.6 2.4 virginica
## 142 6.9 3.1 5.1 2.3 virginica
## 143 5.8 2.7 5.1 1.9 virginica
## 144 6.8 3.2 5.9 2.3 virginica
## 145 6.7 3.3 5.7 2.5 virginica
## 146 6.7 3.0 5.2 2.3 virginica
## 147 6.3 2.5 5.0 1.9 virginica
## 148 6.5 3.0 5.2 2.0 virginica
## 149 6.2 3.4 5.4 2.3 virginica
## 150 5.9 3.0 5.1 1.8 virginica