Hoe om te weten wanneer de zorg over waarschuwingen in R

Fouten en waarschuwingen hebben verschillende functies in R Je kunt er niet omheen fouten, omdat ze gewoon stoppen met uw code. Waarschuwingen aan de andere kant zijn een heel ander beest. Zelfs als R gooit een waarschuwing, het blijft de code onafhankelijk uit te voeren. U kunt de waarschuwingen negeren, maar over het algemeen dat is een vrij slecht idee. Waarschuwingen zijn vaak het enige teken je dat de code heeft een aantal semantische of logische fout.

Bijvoorbeeld, kon u bent vergeten over de ifelse () functie en probeerde iets als het volgende voorbeeld:

> X <- 01:10
> Y <- als (x <5) 0 anders 1
Waarschuwing bericht:
In als (x <5) 0 anders 1:
de aandoening heeft length> 1 en slechts het eerste element wordt gebruikt

Deze waarschuwing wijst op een semantische fout: als verwacht een enkele TRUE of FALSE waarde, maar je moet een hele vector verstrekt. Merk op dat, net als fouten, waarschuwingen vertellen u in het algemeen welke code de waarschuwing heeft gegenereerd.

Hier is nog een waarschuwing dat opduikt regelmatig en kunnen wijzen op een semantische of logische fout in uw code:

> X <- 4
> Sqrt (x - 5)
[1] NaN
Waarschuwing bericht:
In sqrt (x - 5): NaN geproduceerd

Omdat x - 5 is negatief wanneer x 4, kan R niet berekenen de vierkantswortel en waarschuwt u dat de vierkantswortel van een negatief getal is niet een nummer (NaN).

Als je een wiskundige, kunt u erop wijzen dat de vierkantswortel van -1 is 0 - 1i. R kan in feite doen berekeningen op complexe getallen, maar dan moet je je variabelen definiƫren als complexe getallen. U kunt controleren, bijvoorbeeld, het Help-complex dossier? Voor meer informatie.

Hoewel de meeste waarschuwingen gevolg zijn van zowel semantische of logische fouten in uw code, kan zelfs een simpele syntax error een waarschuwing in plaats van een fout te genereren. Als u wilt een aantal punten in R plot, de plot () functie te gebruiken u. Het duurt een argument col om de kleur van de punten op te geven, maar je kon onrechte proberen om de punten te kleuren met behulp van het volgende:

> Plot (01:10, 10: 1, color = "green")

Als je dit probeert, zes waarschuwingsberichten krijgt u in een keer, alles te vertellen dat de kleur is waarschijnlijk niet het argument naam die u zoekt:

Waarschuwingsberichten:
1: In plot.window (...): "kleur" is geen grafische parameter
2: In plot.xy (xy, type, ...): "kleur" is geen grafische parameter
....

Merk op dat de waarschuwingen wijzen niet in de richting van de code die u op de opdrachtregel getypt; in plaats daarvan, ze wijzen op functies die je nooit eerder hebt gebruikt, zoals plot.window () en plot.xy ().

U kunt argumenten van de ene functie naar de andere met behulp van de stippen argument. Dat is precies wat plot () doet hier. Dus, plot () zelf genereert geen waarschuwing, maar elke functie dat perceel () passeert de kleur argument doet.

Als je waarschuwing of foutmeldingen, een grondige blik op de Help-pagina's van de functie (s) die gegenereerd de fout kan helpen bij het bepalen van wat de reden is voor de boodschap die u kreeg. Bijvoorbeeld, op de Help-pagina van? Plot.xy, vindt u dat de juiste naam voor het argument is col.

Dus Samenvattend meeste waarschuwingen wijzen op een van de volgende problemen:

  • De functie gaf je een resultaat, maar om wat voor reden dat resultaat is wellicht niet correct.
  • De functie gegenereerd een atypische uitkomst, zoals NA of NaN waarden.
  • De functie kon niet omgaan met een aantal argumenten en genegeerd.

Alleen de laatste vertelt u er een probleem is met uw syntaxis. Voor de anderen, moet je je code een beetje meer te onderzoeken.