0
votes

Comment échapper des caractères spéciaux dans la fonction Lecture.Table dans R?

J'essaie d'extraire un cadre de données dans le dictionnaire de prononçage de l'Université Carnegie Mellon. Cela fonctionne bien pour obtenir un cadre de données: xxx

mais le contenu du dictionnaire est après la ligne 54 de sorte que la valeur du paramètre de saut doit être "54". Il semble que des caractères spéciaux contenus dans les lignes 54 à 150 provoquent les erreurs suivantes.

par exemple: xxx

est un moyen rapide d'éviter ces erreurs qui s'échappent Personnages?

Merci beaucoup pour votre aide!

Ludovic


0 commentaires

3 Réponses :


1
votes

Je pense que c'est un peu un problème X / Y.

Vous avez déjà les données en mémoire dans le dictionnaire de vecteur de caractères code> et vous souhaitez la transformer en un cadre de données. Vous essayez d'utiliser read.table code> pour le faire, et bloqué car lisez.table code> est en difficulté avec certains des caractères spéciaux du vecteur. Au lieu d'essayer de comprendre un moyen de forcer listable.table code> pour faire le travail, pourquoi pas seulement diviser les cordes aux doubles espaces et les lier ensemble dans un cadre de données? P>

Lorsque j'ai téléchargé le fichier, l'en-tête prend 56 lignes plutôt que 54 lignes, alors nous les laissons tomber, puis appelez strpsplit code> sur les deux espaces des lignes restantes, sans avoir à les convertir pour la première fois en \ t code> caractères. Ensuite, nous utilisons as.data.frame (do.call ("rbind", ...)) code> sur la liste résultante pour obtenir notre cadre de données. P>

Voici un reprex: P>

url <- "http://svn.code.sf.net/p/cmusphinx/code/trunk/cmudict/cmudict-0.7b"
answer <- RCurl::getURL(url)
dictionary <- as.vector(unlist(strsplit(answer, "\n")))
dictionary.df <- strsplit(dictionary[-seq(56)], "  ")
dictionary.df <- as.data.frame(do.call("rbind", dictionary.df), stringsAsFactors = FALSE)
names(dictionary.df) <- c("Item", "Pronunciation")
head(dictionary.df)
#>                 Item                            Pronunciation
#> 1 !EXCLAMATION-POINT EH2 K S K L AH0 M EY1 SH AH0 N P OY2 N T
#> 2       "CLOSE-QUOTE                      K L OW1 Z K W OW1 T
#> 3      "DOUBLE-QUOTE                  D AH1 B AH0 L K W OW1 T
#> 4      "END-OF-QUOTE                  EH1 N D AH0 V K W OW1 T
#> 5         "END-QUOTE                        EH1 N D K W OW1 T
#> 6         "IN-QUOTES                        IH1 N K W OW1 T S


1 commentaires

Merci beaucoup Allan!



1
votes

Fread code> à partir de l'emballage data.Table.Table strud> semble approprié ici.

library(data.table)

dt_dic <- fread(url, skip=56, sep=NULL, header = FALSE, col.names="Item")

dt_dic[, c("Item", "Pronunciation") := tstrsplit(Item, "  ")]
dt_dic
                      Item                            Pronunciation
     1: !EXCLAMATION-POINT EH2 K S K L AH0 M EY1 SH AH0 N P OY2 N T
     2:       "CLOSE-QUOTE                      K L OW1 Z K W OW1 T
     3:      "DOUBLE-QUOTE                  D AH1 B AH0 L K W OW1 T
     4:      "END-OF-QUOTE                  EH1 N D AH0 V K W OW1 T
     5:         "END-QUOTE                        EH1 N D K W OW1 T
    ---                                                            
133850:             {BRACE                                B R EY1 S
133851:        {LEFT-BRACE                      L EH1 F T B R EY1 S
133852:        {OPEN-BRACE                    OW1 P EH0 N B R EY1 S
133853:       }CLOSE-BRACE                      K L OW1 Z B R EY1 S
133854:       }RIGHT-BRACE                        R AY1 T B R EY1 S


1 commentaires

Merci beaucoup Edward!



0
votes

Je voulais comparer les solutions proposées par temps informatique: xxx

quelques indications: xxx


0 commentaires