Имея такую ​​строку:

 "structure(list(a = 5, f = 6), .Names = c(\"a\", \"f\"))"

Где часть

 "structure(list(            ), .Names = c(            ))"

Всегда остается прежним. Такие записи, как x = y в круглых скобках, и их аналоги внутри c () изменяют как содержимое y, так и метку x, а также count.

Какая правильная глобальная подстановка, например, в sed или R gsub, для получения результата

 "a = 5, f = 6"

Используя только один вызов gsub? Т.е. все до и после уйти.

Намерение состоит в том, чтобы получить содержимое R elipsis «как есть», как одно слово, и объединить его в текст в каком-либо месте отчета. Итак, источник исходит из «...».

0
Petr Matousu 12 Фев 2013 в 20:16
3
Как обычно для вопросов о регулярных выражениях: что вы подразумеваете под «такой строкой»? Что можно изменить и что всегда остается неизменным?
 – 
Michael Myers
12 Фев 2013 в 20:17
Стоит немного больше понять, почему вы спрашиваете об этом. Это результат работы dput, и он должен быть правильно проанализирован в R. Не могли бы вы подробнее остановиться на вопросе?
 – 
Justin
12 Фев 2013 в 20:34
Моя строка происходит от deparse (list (...)).
 – 
Petr Matousu
12 Фев 2013 в 20:43

1 ответ

Лучший ответ

Одно из решений:

gsub("structure\\(list\\((.*)\\), .*$", "\\1", x)
# [1] "a = 5, f = 6"

Или эквивалентно:

gsub(".*list\\((.*)\\), .*$", "\\1", x)
1
Arun 12 Фев 2013 в 20:30
Я не могу воспроизвести тот же результат, не могли бы вы добавить даже строку x <- ..., просто чтобы увидеть, что происходит?
 – 
Petr Matousu
12 Фев 2013 в 20:57