Oplossing: het aantal rijen in het resultaat is geen veelvoud van de vectorlengte (arg 1)


Een waarschuwingsbericht dat u kunt tegenkomen bij het gebruik van R is:

 Warning message:
In cbind(A, B, C):
  number of rows of result is not a multiple of vector length (arg 1)

Deze waarschuwing treedt meestal op wanneer u de functie cbind() probeert te gebruiken om kolommen van vectoren met verschillende lengtes aan elkaar te binden.

Houd er rekening mee dat dit bericht slechts een waarschuwing is en dat uw code blijft draaien, maar dat de resultaten die u krijgt mogelijk anders zijn dan u had verwacht.

Het volgende voorbeeld laat zien hoe u deze waarschuwing in de praktijk kunt vermijden.

Hoe de waarschuwing te reproduceren

Stel dat we de functie cbind() gebruiken om drie vectoren samen te binden in kolommen in een dataframe:

 #define three vectors with different lengths
A = c(4, 2, 3, 6)
B = c(9, 1, 8, 7, 0, 7)
C = c(3, 5, 3, 3, 6, 4)

#column bind three vectors into data frame
df <- cbind(A, B, C)

#view data frame
df

Warning message:
In cbind(A, B, C):
  number of rows of result is not a multiple of vector length (arg 1)
     ABC
[1,] 4 9 3
[2,] 2 1 5
[3,] 3 8 3
[4,] 6 7 3
[5,] 4 0 6
[6,] 2 7 4

De cbind- functie werkt met alle drie de vectoren, maar houd er rekening mee dat de waarden van de eerste vector eenvoudigweg steeds opnieuw worden herhaald.

Dit wordt „recycling“ genoemd in R.

Hoe de waarschuwing te vermijden

Om deze waarschuwing volledig te vermijden, moeten we ervoor zorgen dat de lengte van elk van de vectoren die we gebruiken hetzelfde is.

Een manier om dit te bereiken is door de ontbrekende waarden in de kortste vector met NA-waarden als volgt in te vullen:

 #calculate max length of vectors
max_length <- max(length(A), length(B), length(C))

#set length of each vector equal to max length
length(A) <- max_length                      
length(B) <- max_length
length(C) <- max_length 

#cbind the three vectors together into a data frame
df <- cbind(A, B, C)

#view data frame
df

      ABC
[1,] 4 9 3
[2,] 2 1 5
[3,] 3 8 3
[4,] 6 7 3
[5,] NA 0 6
[6,] NA 7 4

Houd er rekening mee dat we deze keer geen waarschuwingsberichten krijgen en dat de korte vectorwaarden eenvoudigweg worden opgevuld met NA-waarden om ervoor te zorgen dat elk van de drie vectoren die we hebben gebruikt gelijke lengtes heeft.

Aanvullende bronnen

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

Hoe op te lossen in R: argumenten hebben betrekking op een verschillend aantal regels
Hoe op te lossen in R: fout bij het selecteren van ongebruikte argumenten
Hoe te repareren in R: vervanging heeft een lengte van nul

Einen Kommentar hinzufügen

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