R no tiene un tipo de dato Set aparte; en su lugar, usa varias funciones para realizar operaciones similares con vectores.
El operador %in% comprueba si un valor pertenece a un conjunto.
2 %in% 1:10 # TRUE
12 %in% 1:10 # FALSE
Entre las funciones relevantes están unique (para eliminar duplicados), además de union(), intersect(), setdiff() y setequal() para operar con pares de conjuntos.
> set_1 <- c("a", "b", "c", "b", "a")
> unique(set_1) # deduplicate
[1] "a" "b" "c"
> set_2 <- c('a', "c", "d")
> union(set_1, set_2) # values in either set
[1] "a" "b" "c" "d"
> intersect(set_1, set_2) # values in both sets
[1] "a" "c"
> setdiff(set_1, set_2) # values in set_1 but not set_2
[1] "b"
> setdiff(set_2, set_1) # values in set_2 but not set_1
[1] "d"
setequal(set_1, c("c", "b", "a", "b")) # are elements the same after deduplication?
[1] TRUE
En todos los casos, set_1 y set_2 quedan sin cambios.
Ozan está armando una lista de reproducción para un próximo viaje por carretera. No quiere escuchar la misma canción más de una vez, pero la lista de reproducción se ha vuelto tan larga que le cuesta recordar qué canciones ya agregó.
La API del reproductor de música de Ozan solo sabe trabajar con vectores. No es posible usar bucles explícitos ni lógica de if/else. ¡Necesita tu ayuda!
Implementa la función remove_duplicates, que recibe una lista de reproducción como parámetro y devuelve una nueva lista de reproducción en la que todas las canciones son únicas.
> playlist <- c(
"Court and Spark - Joni Mitchell",
"Big Yellow Taxi - Joni Mitchell",
"Court and Spark - Joni Mitchell"
)
> remove_duplicates(playlist)
[1] "Court and Spark - Joni Mitchell" "Big Yellow Taxi - Joni Mitchell"
Implementa la función has_track, que recibe una lista de reproducción y una canción como parámetros y devuelve un Boolean que indica si la lista de reproducción contiene la canción.
> playlist <- c(
"The Fashion Show - Grace Jones",
"Dr. Funkenstein - Parliament"
)
> has_track(playlist, "Dr. Funkenstein - Parliament")
[1] TRUE
> has_track(playlist, "Walking in the Rain - Grace Jones")
[1] FALSE
Implementa la función add_tracks, que recibe una lista de reproducción y un vector de una o más canciones como parámetros y devuelve una nueva lista de reproducción que incluye las canciones.
> playlist <- c("Selma - Bijelo Dugme")
> playlist <- add_tracks(playlist, "Atomic Dog - George Clinton")
> playlist
[1] "Selma - Bijelo Dugme" "Atomic Dog - George Clinton"
> add_tracks(playlist, "Selma - Bijelo Dugme")
[1] "Selma - Bijelo Dugme" "Atomic Dog - George Clinton"
> add_tracks(playlist, c("The Chain - Fleetwood Mac", "Selma - Bijelo Dugme"))
[1] "Selma - Bijelo Dugme" "Atomic Dog - George Clinton" "The Chain - Fleetwood Mac"
Implementa la función delete_tracks, que recibe una lista de reproducción y una o más canciones como parámetros y devuelve una nueva lista de reproducción que no incluye las canciones.
> playlist <- c(
"The Treasure - Fra Lippo Lippi",
"After the Fall - Klaus Nomi"
)
> playlist <- delete_tracks(playlist, "The Treasure - Fra Lippo Lippi")
> playlist
[1] "After the Fall - Klaus Nomi"
> delete_tracks(playlist, "I Feel the Magic - Belinda Carlisle")
[1] "After the Fall - Klaus Nomi"
Ozan conoce a alguien nuevo y se pregunta qué tan parecidos son sus gustos musicales.
Implementa la función find_common_tracks, que recibe dos listas de reproducción y devuelve una nueva lista de reproducción que contiene solo las canciones presentes en ambas.
> playlist_1 <- c("Karma - Taylor Swift", "Tired - Adele")
> playlist_2 <- c("Andromeda - Weyes Blood", "Karma - Taylor Swift")
> find_common_tracks(playlist_1, playlist_2)
[1] "Karma - Taylor Swift"
Regístrate en Exercism para aprender y dominar R con 21 conceptos111 ejercicios y mentoría humana real, todo gratis.