Problema
If we list all the natural numbers below 10 that are multiples of 3 or 5, we get 3, 5, 6 and 9. The sum of these multiples is 23. Find the sum of all the multiples of 3 or 5 below 1000.
Si listamos todos los números naturales por debajo de 10, que son múltiplos de 3 o 5, se obtiene 3 , 5, 6 y 9. La suma de estos múltiplos es 23. Encuentra la suma de todos los múltiplos de 3 o 5 por debajo de 1.000.
Solución
x <- 1:999
sum(x[x%%3 == 0 | x%%5 == 0])
Mediante un data frame
# En 4 líneas
x <- seq(999, 1) # Secuencia
y <- x%%3 == 0 # Divisible por 3
z <- x%%5 == 0 # Divisible por 5
df <- data.frame(x, y, z) # Creamos data frame
sum(subset(df, y == TRUE | z == TRUE)$x) # Cálculo final
# En 2 líneas
df <- data.frame(x = 1:999,
y = 1:999%%3 == 0,
z = 1:999%%5 == 0)
sum(subset(df, y == TRUE | z == TRUE)$x)
# Selección sin la función subset
sum(df[y == TRUE | z == TRUE, ]$x)
sum(df[y %in% TRUE | z %in% TRUE, ]$x)
Con dplyr
library(dplyr)
# Data frame
df <- data.frame(x = 1:999,
y = 1:999%%3 == 0,
z = 1:999%%5 == 0)
# Tres opciones de selección:
sum(filter(df, y == TRUE | z == TRUE)$x)
summarise(filter(df, y == TRUE | z == TRUE), sum(x))
filter(df, y == TRUE | z == TRUE) %>% summarise(sum(x))
[1] 233168
Referencias
No hay comentarios:
Publicar un comentario