Игнорировать экологичные персонажи (обратные склады) в r строках

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

  •  11-10-2019
  •  | 
  •  

Вопрос

Во время запуска R-Plugin в SPSS я получаю строку пути Windows в качестве входного например, например,

'C:\Users\mhermans\somefile.csv'

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

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

Итак, есть ли что -то вроде:

>gsub('\\', '/', 'C:\Users\mhermans')
C:/Users/mhermans
Это было полезно?

Решение

Вы можете попытаться использовать аргумент «AllowScapes» в Scan ()

X=scan(what="character",allowEscapes=F)
C:\Users\mhermans\somefile.csv

print(X)
[1] "C:\\Users\\mhermans\\somefile.csv"

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

Сначала вам нужно назначить его на имя:

pathname <- 'C:\\Users\\mhermans\\somefile.csv'

Обратите внимание, что для того, чтобы получить его в вектор имени, вам нужно было удвоить их все, что дает намек на то, как вы можете использовать Regex. На самом деле, если вы прочитаете его из текстового файла, то R сделает все удвоение для вас. Имейте в виду, что это не В самом деле удвоив обратную сундуку. Он хранится как единственная обратная черта, но он отображается таким образом и должен вводиться такими из консоли. В противном случае переводчик R пытается (и часто терпит неудачу), чтобы превратить его в особый характер. И чтобы усугубить проблему, Regex также использует Backslash в качестве побега. Таким образом, чтобы обнаружить побег с помощью GREP или SUB или GSUB, вам нужно в четыре раза в четыре раза

 gsub("\\\\", "/", pathname)
# [1] "C:/Users/mhermans/somefile.csv"

Вам нужно было вдвойне «удвоить» обратную черту. Первая из каждой пары 'simple - сигнал на машину Grep, что то, что будет дальше, является буквальным.

Рассмотреть возможность:

 nchar("\\A")
#  returns `[1] 2`

Если файл e: data junk.txt содержит следующий текст (без кавычек): c: users mhermans somefile.csv

Вы можете получить предупреждение со следующим утверждением, но оно будет работать:

 texinp <- readLines("E:\\Data\\junk.txt")

Если файл e: data junk.txt содержит следующий текст (с кавычками): "c: users mhermans somefile.csv"

Вышеуказанное заявление RED -Lines также может дать вам предупреждение, но теперь будет содержать:

"" C: users mhermans somefile.csv ""

Итак, чтобы получить то, что вы хотите, убедиться, что в входящем файле нет цитат, и использовать:

 texinp <- suppressWarnings(readLines("E:\\Data\\junk.txt"))
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top