2015-08-06 2 views
3

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

x <- "a string with 'single' quotes" 
y <- 'another one with "double" quotes' 

paste0(x, y) 
[1] "a string with 'single' quotesanother one with \"double\" quotes" 
cat(x, y) 
a string with 'single' quotes another one with "double" quotes 

Что делать, если у нас есть строка с одинарными и двойными кавычками? Я попытался это: Обратные кавычки не работают (R вызывает ошибку):

z <- `a string with 'single' quotes and with "double" quotes` 

Используйте \" вместо ", а затем использовать cat: Это хорошо работает, но проблема заключается в том, что пользователи должны добавить обратную косую черту в каждая двойная кавычка.

z1 <- "a string with 'single' quotes and with \"double\" quotes" 

что, если у нас есть огромный текст файл (например, в .txt, например) с обоих типов кавычек, и мы хотим, чтобы читать в R?

На этом этапе (глупо) решение мне кажется: работа вне R, сделать некоторые манипуляции (например, заменить все " с \"), а затем прочитать в R. Является ли это решение или существует лучший способ внутри R?

Вот только немного .txt файл, например: Link, в любом случае для тех, кто заинтересован, этот файл просто .txt с одной линии с таким текстом:

строка с «одиночными» кавычки и \ "double \" котировки

+0

'readLines' будет работать аналогично ответам Tim. или вы можете использовать perl и look-arounds, если вам особенно сложно – rawr

+0

Возможно, лучшим ответом является просто вымыть данные перед импортом в R и удалить кавычки. –

+0

Извините, парни за задержку в добавлении текстового файла, у меня были проблемы с Dropbox. Теперь файл должен быть доступен. – SabDeM

ответ

2

При чтении текста вы можете указать любые альтернативные символы цитирования, например

> p<-scan(what="character",quote="`") 
1: `It is 'ambiguous' if "this is a new 'string' or "nested" in the 'first'", isn't it?` 
2: 
Read 1 item 
> p 
[1] "It is 'ambiguous' if \"this is a new 'string' or \"nested\" in the 'first'\", isn't it?" 

Или просто прочитайте исходный текст, например. с readline, как это было предложено @rawr

> readline() 
"It is 'ambiguous' if "this is a new 'string' or "nested" in the 'first'", isn't it?" 
[1] "\"It is 'ambiguous' if \"this is a new 'string' or \"nested\" in the 'first'\", isn't it?\"" 
Смежные вопросы