2015-10-28 2 views
0

Я рассмотрел существующие вопросы по этому вопросу, но это не помогло. Я пытаюсь прочитать SQL-запрос из текстового файла, и в нем есть кавычки и регулярное выражение. Я не могу найти способ получить символ \' при сканировании строки. Я пробовал:Чтение escape-символов с помощью сканирования()

> scan(text=" 'H' ", what="character") 
Read 1 item 
[1] "H" 
There were 50 or more warnings (use warnings() to see the first 50) 
> scan(text=" \'H\' ", what="character") 
Read 1 item 
[1] "H" 
> scan(text=" \\'H\\' ", what="character") 
Read 1 item 
[1] "\\'H\\'" 

Я хочу, чтобы результат моего scan() быть \'H\', то есть строка, которая печатает 'H' при вызове cat на нем. Другими словами, что строка x производит

> scan(text=x, what="character") 
Read 1 item 
[1] "\'H\'" 

Я думал, что второй пример будет делать это, но это не так. Или есть альтернатива scan(), которая не вносит никаких изменений в строку, в которую он читает?

(Точно так же, для регулярного выражения Я хотел бы scan() вернуть строку, когда cat Ted производит '^\\d+'.)

+0

Что относительно 'scan (text =" 'H' ", what =" ", quote =" ")'? Это не приведет к печати обратных косых черт, но даст нужный результат 'cat()' –

+0

. Удаленный ответ by @Richard Scriven решил мою проблему, используя 'scan (text =" 'H' ", what =" character ", quote =" ") '. Я не мог понять, что делает «цитата» из документации. – Flounderer

+0

Хорошо, я не был уверен. Отменить мой ответ :) –

ответ

2

Изменить свой первый вызов включить корректировку quote аргумента.

x <- scan(text = " 'H' ", what = "", quote = "") 
x 
# [1] "'H'" 
cat(x) 
# 'H' 

Установка quote = "" говорит, что нет никаких символов цитирования, и поэтому цитаты читаются как есть.

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