Metadata retourneren
Soms wil je meerdere dingen uit een functie teruggeven, maar moet het resultaat een specifieke klasse hebben (bijvoorbeeld een data frame of een numerieke vector), waardoor een lijst teruggeven niet geschikt is. Dit komt vaak voor wanneer je een resultaat hebt plus metadata over dat resultaat. (Metadata is "data over de data". Het kan bijvoorbeeld het bestand zijn waaruit een gegevensset is ingeladen, de gebruikersnaam van de persoon die de variabele heeft aangemaakt, of het aantal iteraties dat een algoritme nodig had om te convergeren.)
In dat geval kun je de metadata opslaan in attributen. Herinner je de syntaxis voor het toekennen van attributen als volgt.
attr(object, "attribute_name") <- attribute_value
Deze oefening maakt deel uit van de cursus
Introductie tot functies schrijven in R
Oefeninstructies
- Werk
pipeable_plot()bij zodat het resultaat een attribuut met de naam"formula"heeft met de waarde vanformula. plt_dist_vs_speed, dat je eerder hebt gemaakt, wordt getoond. Bekijk de bijgewerkte structuur.
Praktische interactieve oefening
Probeer deze oefening eens door deze voorbeeldcode in te vullen.
pipeable_plot <- function(data, formula) {
plot(formula, data)
# Add a "formula" attribute to data
___ <- ___
invisible(data)
}
# From previous exercise
plt_dist_vs_speed <- cars %>%
pipeable_plot(dist ~ speed)
# Examine the structure of the result
___