Hoe te repareren in r: vervanging heeft een lengte van nul


Een fout die je tegen kunt komen in R is:

 Error in x[1] = x[0]: replacement has length zero

Deze fout treedt op wanneer u probeert een waarde in een vector te vervangen door een andere waarde die „lengte nul heeft“, wat betekent dat deze niet bestaat.

In deze tutorial wordt precies uitgelegd hoe u deze fout kunt oplossen.

Hoe de fout te reproduceren

Stel dat we de volgende vector creëren met 10 waarden in R:

 data = c(1, 4, 5, 5, 7, 9, 12, 14, 15, 17)

Stel nu dat we de volgende for() -lus proberen te gebruiken om elke waarde in de vector te vermenigvuldigen met de waarde ervoor:

 for (i in 1: length (data)) {
  data[i] = data[i] * data[i-1]
}

Error in data[i] <- data[i] * data[i - 1]: replacement has length zero

We krijgen de foutmelding “ vervanging heeft een lengte nul “ omdat we in de eerste lus proberen de volgende vermenigvuldiging uit te voeren:

  • gegevens[1] * gegevens[0]

Omdat R-indexen bij 1 beginnen, bestaat de waarde data[0] eenvoudigweg niet.

We kunnen dit controleren door te proberen de waarde op positie 0 in de vector af te drukken:

 print (data[0])

numeric(0)

Het resultaat is een digitale vector met lengte 0 – met andere woorden: deze bestaat niet.

Hoe u de fout kunt oplossen

De manier om deze fout op te lossen is door eenvoudigweg een for() -lus te gebruiken die niet probeert toegang te krijgen tot een waarde van de vector die niet bestaat.

In ons voorbeeld kunnen we deze fout corrigeren door de for-lus te starten op indexpositie 2 in plaats van op positie 1:

 for (i in 2: length (data)) {
  data[i] = data[i] * data[i-1]
}

#view updated vector
data

 [1] 1 4 20 100 700 6300 75600
 [8] 1058400 15876000 269892000

Houd er rekening mee dat we geen foutmelding ontvangen omdat we nooit hebben geprobeerd toegang te krijgen tot een indexpositie in de vector die niet bestaat.

Aanvullende bronnen

In de volgende tutorials wordt uitgelegd hoe u andere veelvoorkomende fouten in R kunt oplossen:

Oplossing: voorwaarde heeft lengte > 1 en alleen het eerste element wordt gebruikt
Oplossing: Vervangen heeft X-regels, gegevens hebben Y
Oplossing: niet-numeriek argument van binaire operator
Oplossing: dim(X) moet een positieve lengte hebben
Oplossing: fout bij het selecteren van ongebruikte argumenten

Einen Kommentar hinzufügen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert