Избавление от раздражения обратной косой чертой в R для Windows

StackOverflow https://stackoverflow.com/questions/1407238

  •  05-07-2019
  •  | 
  •  

Вопрос

В начале своей жизни в R я обнаружил, что R и окна находятся на разных страницах, когда дело касалось разделителя между каталогами и подкаталогами.Несмотря на то, что я знаю об этой проблеме, мне все еще больно вручную ставить обратную косую черту перед всеми моими обратными косыми чертами или заменять их все прямыми косыми чертами.

Мне нравится копировать путь или полное имя файла с помощью любого из нескольких приложений, которые я запускаю на своем компьютере (например,XYPlorer, Всё от voidtools) и потом вставлю в Tinn-R.Могу ли я как-нибудь автоматизировать задачу, которую сейчас выполняю вручную.

  • Есть ли настройка в Tinn-R?
  • Есть ли настройка в R?
  • Есть ли скрипт autohotkey, который мог бы сделать это за меня по умолчанию?

Предыстория для тех, кто не знает, о чем я говорю.

Цитата из часто задаваемых вопросов по R для Windows, версия для R-2.9.2, B.Д.Рипли и Д.Дж.Мердок

Backslashs должны быть удвоены в R-строках, поэтому, например, нужно `" D: r-2.9.2 Library xgobi scripts xgobi.bat "'.Вы можете облегчить жизнь для себя, используя прямые черты в качестве разделителей пути:они работают под Windows

Это было полезно?

Решение

Я написал автогорячая клавиша скрипт, который запускается при вводе "rfil" - без кавычек.

:O:rfil:: ;replaces backslashes with forward slashes in a file name that is stored on the clipboard
StringReplace,clipboard,clipboard,\,/,All
send %clipboard%
return

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

Я буду рад объяснить, что я сделал, если вы этого захотите.

Другие советы

КлипПат добавляет пункты контекстного меню, позволяющие выбрать тип косой черты, которую вы хотите вставить.

С помощью Как сделать генетику, который, похоже, может оказаться полезным ресурсом для пользователей R в целом.

Я адаптировал следующий общий код autohotkey для замены всех обратных косых черт на косые черты всякий раз, когда я вставляю что-либо в RStudio.У этого подхода есть плюсы и минусы.

Плюсы: Вам не нужно об этом думать.Код будет выполняться только в том случае, если активным окном является RStudio.

Минусы: Код вызывается каждый раз, когда вы вставляете что-то в R.Каждый раз он пытается найти обратную косую черту и заменить ее прямой.

GroupAdd, R, RStudio

;replaces backslashes with forward slashes in a file name that is stored on the clipboard
#IfWinActive ahk_group R
   ^v::
      StringReplace,clipboard,clipboard,\,/,All
      send %clipboard%
   return
#IfWinActive

Я использую поиск и замену, но, конечно, это не полностью автоматический процесс, и вам нужно быть осторожным, чтобы не заменить « » или « ».

Это не совсем тот ответ, который вы ищете, но в R есть свои собственные функции сценариев оболочки, которые я часто использую:

list.files(,full=TRUE) [возвращает полный путь с соответствующими разделителями]

file.path() [объединяется с помощью разделителя, специфичного для ОС]

и так далее...

Вы можете создать функцию-обертку для всех имен путей:

> replace.slash <- function(path.name) gsub("\\\\","/",path.name)
> path.name <- "c:\\tmp\\"
> replace.slash(path.name)
[1] "c:/tmp/"

[Редактировать]: Спасибо Хэдли.Я исправил там ошибку.

Кстати, я нашел это очень полезная дискуссия на эту тему.

Это АвтоИт код, который делает то же самое (заменяет \ с /).

Local $text1 = ClipGet()
$text2=StringReplace($text1,"\","/")
ClipPut($text2)

почему бы не создать функцию, которая проверяет ОС и возвращает правильный разделитель файлов (я считаю, что это Java-решение)?

file_sep <- function(){
ifelse(.Platform$OS.type == "unix", "/", "//")
}
file_sep()

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top