J'ai une trame de données dans R qui provient de l'exécution de statistiques sur le résultat d'une fusion/opération de moulage. Je veux ajouter une ligne dans cette base de données contenant une valeur nominale. Cette valeur nominale est présente dans les noms de chaque colonneExiste-t-il une meilleure façon de vectoriser une partie d'un nom de colonne dans une ligne d'une trame de données? R
df<-as.data.frame(cbind(x=c(1,2,3,4,5),`Var A_100`=c(5,4,3,2,1),`Var B_5`=c(9,8,7,6,5)))
> df
x Var A_100 Var B_5
1 1 5 9
2 2 4 8
3 3 3 7
4 4 2 6
5 5 1 5
Donc, je veux créer une nouvelle ligne, qui contient « 100 » dans la colonne Var A_100 et « 5 » dans le Var B_5. Actuellement, c'est ce que je fais, mais je suis sûr qu'il doit y avoir une meilleure façon vectorisée de le faire.
temp_nom<-NULL
for (l in 1:length(names(df))){
temp_nom[l]<-strsplit(names(df),"_")[[l]][2]
}
temp_nom
[1] NA "100" "5"
df[6,]<-temp_nom
> df
x Var A_100 Var B_5
1 1 5 9
2 2 4 8
3 3 3 7
4 4 2 6
5 5 1 5
6 <NA> 100 5
rm(temp_nom)
Typiquement, j'aurais 16-24 colonnes. Des idées?