Je suis nouveau avec RMarkdown et j'ai plusieurs problèmes avec les blocs de données que je veux tracer.
J'ai un bloc de données avec 3 lignes et 5 colonnes appelé a1, puis j'ai un vecteur avec cinq éléments. Comme j'ai besoin d'une nouvelle trame de données avec les deux, je fais une rbind.
a<-as.data.frame(c("a","b","c")) b1<-c(1:3) b2<-c(1:3) b3<-c(1:3) b4<-c(1:3) a1<-cbind(a,b1,b2,b3,b4) c<-c("Promedio",7.55,6.74,9.34,12.88) a1<-rbind(a1,c)
Cela semble bien fonctionner en dehors du rmarkdown mais quand je le tricot, j'ai cette erreur:
Erreur dans rbindlis (l, use.names, fill, idcol): l'élément 2 a 1 colonnes, incompatible avec l'élément 1 qui a 13 colonnes. Si à la place vous devez remplir les colonnes manquantes, utilisez la valeur TRUE de l'argument «fil». Appelle: ... eval -> eval -> rbind -> rbind -> -> rbindlist
3 Réponses :
Voici un exemple de travail minimal de ce que vous essayez de faire. C'est un exemple fonctionnel, car il reproduit votre problème d'utilisation de rbind
dans un document knitr. C'est minime, car presque tout ce qui n'est pas pertinent pour reproduire votre problème a été supprimé. Essayez de tricoter ceci et si cela fonctionne, modifiez-le en fonction de vos besoins. Si vous rencontrez des problèmes, supprimez tout ce qui n'est pas nécessaire pour reproduire le problème, puis publiez le code exécutable complet afin que nous puissions l'examiner.
--- output: html_document --- Some text ```{r} knitr::opts_chunk$set(echo = TRUE) df <- data.frame(text = c("a", "b"), b1 = 1:2, stringsAsFactors = FALSE) c <- c("Promedio",7.55) rbind(df,c) ```
Ne fonctionne pas car l'objet a<-as.data.frame(c("a","b","c"))
names(a) #Returns the ugly "c(\"a\", \"b\", \"c\")"
names(a) <- "a"
names(a) #Returns a
b1<-c(1:3)
b2<-c(1:3)
b3<-c(1:3)
b4<-c(1:3)
a1<-cbind(a,b1,b2,b3,b4)
#c<-c("Promedio",7.55,6.74,9.34,12.88) This is a vector
#But it should be a data.frame
c <- data.frame(a = c("Promedio"),
b1 = c(7.55),
b2 = c(6.74),
b3 = c(9.34),
b4 = c(12.88))
a1 <-rbind(a1,c)
a1
Merci beaucoup pour vos réponses mais j'ai finalement décidé de refaire toute la trame de données car cela ne fonctionnait pas du tout. Je ne suis pas en mesure de partager la base de données originale car elle est confidentielle, mais voici le script final:
#I started doing a data frame from a dcast with four quarters (trimestre I...) and # a flag (0-1) a<-dcast(b,RSdRTelecom~Trimestre+Fg_Deuda,fun=sum,value.var="u") #then I created diferent vectors for each column for the new data frame Trimestre_I<-c(a$`1_1`/(a$`1_0`+a$`1_1`)) Trimestre_II<-c(a$`2_1`/(a$`2_0`+a$`2_1`)) Trimestre_III<-c(a$`3_1`/(a$`3_0`+a$`3_1`)) Trimestre_IV<-c(a$`4_1`/(a$`4_0`+a$`4_1`)) #Then I created a vector for the mean values Promedio<-c(sum(a$`1_1`)/(sum(a$`1_0`)+sum(a$`1_1`)), sum(a$`2_1`)/(sum(a$`2_0`)+sum(a$`2_1`)), sum(a$`3_1`)/(sum(a$`3_0`)+sum(a$`3_1`)), sum(a$`4_1`)/(sum(a$`4_0`)+sum(a$`4_1`))) #I create a new data frame with cbind by Trimestre... a<-cbind(Trimestre_I,Trimestre_II,Trimestre_III, Trimestre_IV) #Then do a rbind with the mean vector a<-rbind(a,Promedio) #Finnaly, I added a new vector with the names of the groups Grupo<-c("SdR Telecom 1,2,3", "SdR Telecom 4,5", "VacÃo", "Promedio") a<-cbind(Grupo,a)
qu'est-ce qu'un
a
dans le cbind ci-dessus? Lorsque nous tricotons, le tricoteur n'utilise pas les variables d'environnement que vous avez créées dans votre session rstudio. Veuillez effacer votre environnement et réessayer. C'est généralement la cause de la plupart des problèmes.Nous pourrions mieux vous aider si vous publiez un exemple minimal reproductible. Prenez votre document Rmarkdown et supprimez toutes les lignes qui ne sont pas nécessaires pour reproduire votre erreur, puis publiez ce code ici et nous pouvons vous aider à le comprendre.
Lorsque je mets votre code (fixe) avec la définition de
a
dans un fichierRmd
, j'obtiens l'avertissementniveau de facteur invalide, NA généré
. Lorsque j'ajoutestringsAsFactors = FALSE
, le code s'exécute sans erreur.