84 votes

Convertir efficacement une barre oblique inversée en barre oblique inversée dans R

Je cherche un moyen efficace de convertir les back slash en forward slash dans R. Parfois, je copie le lien du répertoire dans Windows et j'obtiens quelque chose comme ça :

C:\Users\jd\Documents\folder\file.txt

Comment puis-je modifier rapidement ce texte pour qu'il devienne C:/Users/jd/Documents/folder/file.txt ? Je ne peux même pas lire l'expression ci-dessus en tant que caractère. Il y a une erreur

" \u utilisé sans chiffres hexagonaux dans une chaîne de caractères commençant par "" C:\u ".

Je sais que la fonction TAB de R permet de trouver rapidement l'emplacement, mais je me demandais s'il existait une autre solution. Je pourrais aussi changer le répertoire de travail pour l'emplacement du dossier. Je me suis amusé à essayer de convertir le backslash en forward slash et je n'ai pas réussi à le faire, c'est pourquoi j'ai posé cette question par curiosité.

65voto

Arun Points 41689

Dans R, vous devez échapper au \ con \\ Votre chemin devrait donc être le suivant :

x <- "C:\\Users\\jd\\Documents\\folder\\file.txt"

Pour ce faire, vous pouvez procéder comme suit :

x <- readline()

puis, à l'invite, collez votre non modifié chemin (CTRL+V puis ENTER)

Enfin, pour modifier \\ a / partout, vous pouvez utiliser gsub une fois de plus en échappant à la \ mais deux fois, comme suit :

gsub("\\\\", "/", x)
# [1] "C:/Users/jd/Documents/folder/file.txt"

47voto

Josh Gilfillan Points 1583

Si vous souhaitez réduire au minimum le nombre de frappes pour convertir les barres obliques inverses lorsque vous collez des chemins, utilisez un fichier RStudio extrait défini comme suit :

snippet pp
    "`r gsub('"', "", gsub("\\\\", "/", readClipboard()))`"

N'oubliez pas de faire précéder la deuxième ligne d'un onglet mais pas d'espaces multiples pour que le snippet fonctionne.

Tapez ensuite pp , TAB , ENTER et le texte du presse-papiers est collé, les barres obliques inverses étant remplacées par des barres obliques inverses et entourées de guillemets.

Voici les étapes que je suis habituellement pour copier les chemins d'accès aux fichiers dans RStudio une fois que l'extrait ci-dessus a été défini :

  1. Naviguer vers le chemin d'accès au fichier dans l'explorateur.
  2. Si l'on copie un chemin d'accès à un fichier, alors : Shift + Right click sur le fichier, puis cliquez sur Copier comme chemin .
  3. Si vous copiez un chemin d'accès à un dossier, alors.. : Alt + d , Ctrl + c .
  4. Changez la fenêtre en RStudio et concentrez-vous sur le script de R où vous voulez coller le chemin.
  5. pp , TAB , ENTER pour le coller dans RStudio et convertir les barres obliques inverses en barres obliques inverses.

15voto

Eden Points 299

J'utilise Chemin Copie Copie qui est un plug-in pour Windows qui vous permet de créer des commandes de copie personnalisées lorsque vous cliquez avec le bouton droit de la souris sur un fichier/dossier dans Windows. Ainsi, mon menu de clic droit comporte l'option "Copier le chemin complet avec barre oblique", qui copie le fichier/dossier avec des barres obliques. Je suppose que cela me permet d'économiser jours chaque année en changeant manuellement les barres obliques au format de R.

13voto

Ben Points 8166

J'aime utiliser le complément RStudio snippetsaddin qui a la fonction Convertir la barre oblique :

Il inversera toutes les barres obliques soit dans le(s) bloc(s) de code sélectionné(s), soit s'il n'y a pas de sélection (ou si seul l'espace blanc est sélectionné), il inversera toutes les barres obliques dans le presse-papiers et les collera à la (aux) position(s) actuelle(s) du curseur.

Les modules complémentaires sont installés comme un paquet. Pour installer celui-ci, procédez comme suit :

devtools::install_github("sfr/RStudio-Addin-Snippets", type = "source")

12voto

cryo111 Points 3332

Si je comprends bien, vous voulez vous débarrasser de l'édition des chaînes. Pour pouvoir utiliser gsub il faudrait modifier tous les \ a \\ manuellement d'abord. Alors, pourquoi ne pas simplement changer \ a / en première place ?

Si vous avez la chaîne dans le presse-papiers, vous pouvez utiliser

  x=scan("clipboard",what="string")

Cela donne

  "C:\\Users\\jd\\Documents\\folder\\file.txt"

C'est-à-dire qu'il convertit tous les \ a \\ automatiquement. Je sais, ce n'est pas très pratique, mais c'est le seul moyen que je connaisse pour contourner l'édition.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X