Gestionarea căilor de fișiere Windows în R

URMĂREȘTE-NE
16,065FaniÎmi place
1,142CititoriConectați-vă

(Acest articol a fost publicat pentru prima dată pe Brenden Smithși cu amabilitate a contribuit la R-bloggeri). (Puteți raporta problema legată de conținutul acestei pagini aici)


Doriți să vă distribuiți conținutul pe R-bloggeri? dați clic aici dacă aveți un blog, sau aici dacă nu aveți.

Recent, am început o nouă poziție care îmi impune să folosesc un computer Windows (mi-e foarte dor de MacBook Air). Acest lucru m-a făcut să învăț despre diferențele subtile atunci când folosesc R pe diferite sisteme de operare.

Dacă sunteți ca mine, probabil că lucrați cu o echipă și vă ocupați de date confidențiale. Multe locuri de muncă folosesc unități de rețea pentru a stoca datele în siguranță. Adesea, în munca mea de zi cu zi, folosesc fișiere cu căi de fișiere din ce în ce mai complexe și le citesc în RStudio. Dacă sunteți familiarizat cu acest proces, probabil că știți cât de special poate fi R despre formatarea căii fișierului.

R preferă ca căile fișierelor să fie separate prin bare oblice /. Căile implicite ale fișierelor din Windows folosesc totuși bare oblice inverse . Tu putea schimbați manual fiecare bară oblică inversă într-o bară oblică înainte, sau adăugați o altă bară oblică înapoi, astfel încât fiecare folder să fie separat de două bare oblice. Deși ambele opțiuni funcționează de cele mai multe ori, dacă faceți acest lucru suficient de des, există o soluție mai eficientă!

O funcție de simplificare a fluxului de lucru

Pentru a evita această problemă, folosesc o funcție personalizată pentru a importa și formata rapid căile fișierelor mele:

Cod
# install.packages("clipr")
copied_path <- function(){
  out <- clipr::read_clip() # or readClipboard on Windows
  out <- gsub("^"|"$", "", out)
 # out <- gsub("\\", "/", out)
  clipr::write_clip(out) # writeClipboard(out)
  message("The formatted path has been copied to your clipboard.")
  return(out)
}

Folosesc funcții din pachetul R clipr pentru că am scris această postare pe blog pe un MacBook Air. Pe o mașină Windows, aș folosi funcțiile readClipboard şi writeClipboard din utils pachet pentru a evita o dependență suplimentară.

Să presupunem că am o cale de fișier complexă ca aceasta: „myfileisinheresomewhere.txt”. Mai întâi aș copia acest lucru în clipboard din exploratorul de fișiere. Pe o mașină Windows, aceasta copiază calea completă, inclusiv ghilimele. Când rulăm funcția noastră în consolă, se întâmplă următoarele:

Aceasta returnează calea fișierului bine formatată și o copiază automat în clipboard, economisind timp și efort.

Cum funcționează funcția

În R, putem citi ceea ce este copiat în clipboard. Acesta este primul pas în funcția noastră. Îl putem apela ca șir folosind următoarea comandă:

Cod
out <- clipr::read_clip()
# or readClipboard() on Windows

Când copiem o cale de fișier din exploratorul de fișiere pe o mașină Windows, aceasta include ghilimele. Prin urmare, următorul pas este să le eliminați din șir folosind regex:

Cod
out <- gsub("^"|"$", "", out)

Apoi putem înlocui barele oblice duble din spate cu o oblică înainte. Dacă nu facem acest lucru, șirul copiat în clipboard-ul nostru va păstra bare oblice inverse simple:

Cod
out <- gsub("\\", "/", out)

Pentru pasul final, copiem noul șir în clipboard, trimitem un mesaj la consolă și returnăm noul șir:

Cod
  clipr::write_clip(out) # writeClipboard(out)
  message("The formatted path has been copied to your clipboard.")
  return(out)

O altă alternativă

Dacă utilizați versiunea R 4.0.0 sau o versiune ulterioară, aveți, de asemenea, opțiunea de a utiliza o constantă șir brută. Acest lucru se face prin împachetarea textului cu r"()". Aceasta va returna un șir cu bare oblice inverse duble:



Dominic Botezariu
Dominic Botezariuhttps://www.noobz.ro/
Creator de site și redactor-șef.

Cele mai noi știri

Pe același subiect

LĂSAȚI UN MESAJ

Vă rugăm să introduceți comentariul dvs.!
Introduceți aici numele dvs.