2013-07-12 4 views
28

Ищу эффективный способ преобразовать обратно косую черту вперед слэш в R. Когда-нибудь я скопировать ссылку на каталог из окна, и я получаю что-то вроде этого:эффективно преобразовать обратный слэш вперед слэш в R

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

Как я могу быстро изменить это на C:/Users/jd/Documents/folder/file.txt? Я даже не могу прочитать вышеупомянутое выражение как символ. Он выдает ошибку "\u used without hex digits in character string starting ""C:\u".

Спасибо.

+1

Просто вне интереса, зачем вам это нужно? –

+0

Я знаю, что функция вкладок в R помогает быстро найти местоположение, но было просто интересно, есть ли другая работа. Я также могу изменить рабочий каталог на папку с папкой. Я просто играл вокруг и пытался конвертировать обратную косую черту в косую черту и не был прямым, поэтому спросил это только из-за любопытства. –

ответ

29

В R, вы, чтобы избежать \ с \\ Итак, ваш путь должен быть:

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

Чтобы получить, что вы можете сделать:

x <- readline() 

затем, в строке , вставьте свой немодифицированный путь (CTRL + V, затем ENTER)

И наконец, чтобы изменить \\ навезде, вы могли бы использовать gsub, еще раз, спасаясь от \, но в два раза, а именно:

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

спасибо за ваш ответ. Единственная причина, по которой я хочу изменить это выражение обратной косой черты на косую черту, - это то, что в Windows, когда я пытаюсь скопировать адрес конкретного форварда, он имеет только одну обратную косую черту. Теперь ручное добавление обратной косой черты не будет эффективным. Теперь я понимаю, что копирование просто не работает. –

+11

'readClipboard()' - еще одна опция, которая автоматически преобразует обратную косую черту в скопированном тексте от одного до двух. – thelatemail

+0

@thelatemail Спасибо, кажется, 'readClipboard()' тот, который я ищу. –

8

Если я правильно понимаю, вы хотите избавиться от редактирования строки. Чтобы иметь возможность использовать gsub, вам сначала придется вручную изменить все \ на \\. Итак, почему бы просто не изменить \ на / на первом месте?

Если у вас есть строки в буфер обмена вы можете использовать

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

Это дает

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

То есть, он преобразует все \ в \\ автоматически. Я знаю - не очень удобно, но единственный способ, которым я знаю, чтобы обойти редактирование.

+0

BTW: С «буфером обмена» я имею в виду то, что вы скопировали с помощью «CTRL + V». – cryo111

+1

Я не получаю ожидаемого, когда у меня есть имя папки, разделенное пробелами. Например, 'C: \ Users \ jd \ Documents \ моя страна \ мое имя \ file.txt'. –

+0

Хммм ... хороший пункт. Вы можете использовать другой разделитель 'x = scan (" clipboard ", what =" string ", sep ="; ")'. Я изменил его на ';'. Я считаю, что точки с запятой не допускаются в пути к файлам, не так ли? Поэтому вы должны быть в безопасности, выбрав точку с запятой в качестве разделителя. – cryo111

3

Вот метод один шаг преобразования адреса из буфера обмена

x <- gsub ("\\\\", "/", readClipboard() ) 
6

программу AutoHotkey:

^+v:: 
StringReplace, clipboard, clipboard, \,/,All 
send %clipboard% 

после управления + с пути к файлу, используйте Ctrl + Shift + V, чтобы вставить

7

Я использую Path Copy Copy, который является плагином для Windows, который позволяет создавать пользовательские команды копирования при щелчке правой кнопкой мыши по файлу/папке в Windows. Таким образом, в моем меню правой кнопки мыши есть опция «Копировать полный путь с перемоткой вперед», который копирует файл/папку с помощью косой черты. Я предполагаю, что это экономит мне дней каждый год от ручного смены коллажа до формата R.

10

Если вы хотите наименьшее количество нажатий клавиш для преобразования обратной косой черты при вставке пути, используйте RStudio snippet определяется следующим образом:

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

Затем введите С., TAB, ENTER и текст на вашем скриншоте буфера обмена, обратные косые черты заменены косой чертой и окружены кавычками.

Вот шаги, которые я обычно берут для копирования пути к файлу в RStudio раз выше фрагмент кода был определен:

  1. Перейдите к файлу путь в проводнике.
  2. При копировании файла путь, то: Сдвиг + правой кнопкой мыши на файл, а затем нажмите Копировать как путь.
  3. При копировании путь к папке затем: Alt + d, Ctrl + с.
  4. Измените окно на RStudio и сфокусируйтесь в R-скрипте, где вы хотите вставить путь.
  5. С., TAB, ENTER для вставки в RStudio и конвертировать обратные слэши слэша.
0

Раствор без сниппета Defintion является

writeClipboard(gsub("\\\\", "/", readClipboard())) 
3

Я хотел бы использовать RStudio надстройку snippetsaddin который имеет функцию 'Convert slash':

Это будет полностью изменить все косые черты либо в выбранный блок (-ы) кода, или если нет выбора (или выбрано только пробел), он отменит все косые черты в буфере обмена и вставляет его в текущие позиции (-ы) курсора.

+1

работает как очарование. :) –

Смежные вопросы