J'ai un dataframe, df
, avec déjà un certain nombre de colonnes de données. J'ai un vecteur, namevector
, plein de chaînes. J'ai besoin de colonnes vides ajoutées à df
avec les noms des colonnes de namevector
.
J'essaye d'ajouter des colonnes avec cette boucle for, en itérant chaque chaîne dans namevector
.
for (i in length(namevector)) {
df[, i] <- NA
}
mais je reste avec cette erreur:
Error in `[<-.data.frame`(`*tmp*`, , i, value = NA) : new columns would leave holes after existing columns
Sinon, j'ai envisagé de créer une base de données vide avec les noms corrects, puis cbind
- associer les deux bases de données, mais je ne sais pas comment procéder pour la coder.
Comment pourrais-je résoudre ce problème?
Le problème avec votre code est dans la ligne:
for(i in length(namevector))
Vous devez vous demander: qu'est-ce que length(namevector)
? C'est un numéro. Donc, essentiellement, vous dites:
for(i in 11)
df[,i] <- NA
Ou plus simplement:
df[,11] <- NA
C'est pourquoi vous obtenez une erreur. Ce que tu veux c'est:
for(i in namevector)
df[,i] <- NA
Ou plus simplement:
df[,namevector] <- NA
set.seed(1)
example <- data.frame(col1 = rnorm(10, 0, 1), col2 = rnorm(10, 2, 3))
namevector <- c("col3", "col4")
example[ , namevector] <- NA
example
# col1 col2 col3 col4
# 1 -0.6264538 6.5353435 NA NA
# 2 0.1836433 3.1695297 NA NA
# 3 -0.8356286 0.1362783 NA NA
# 4 1.5952808 -4.6440997 NA NA
# 5 0.3295078 5.3747928 NA NA
# 6 -0.8204684 1.8651992 NA NA
# 7 0.4874291 1.9514292 NA NA
# 8 0.7383247 4.8315086 NA NA
# 9 0.5757814 4.4636636 NA NA
# 10 -0.3053884 3.7817040 NA NA
Le ci-dessous fonctionne pour moi
dataframe[,"newName"] <- NA
Assurez-vous d'ajouter ""
pour la nouvelle chaîne de nom.