Извините за неудобное название - очень открыт для предложений, как его лучше сформулировать ...
Это очень похоже на Вопрос 1 , Вопрос 2 и вопрос 3 . У всех этих вопросов есть решение, которое удалялось бы после «каждого последнего» появления разделителя (чаще всего подчеркивания), в том числе когда он встречается в начале строки.
Мне нужно сохранить те строки, в которых разделитель встречается только один раз, в начале строки.
В примере для x[3]
и x[5]
я хотел бы сохранить «-3» и «-5». Моя первая попытка сохраняет -5, но не -3 ...
x <- c("1 - 2","2-1", "-3", "4", "-5-6")
gsub("(.*)\\-.*$", "\\1", x)
#> [1] "1 " "2" "" "4" "-5"
gsub("\\-[^\\-].*$", "", x)
#> [1] "1 " "2" "" "4" ""
edit Текущее решение Ronaks работает для предыдущего примера, но терпит неудачу, когда есть символы, отличные от "чисел" , либо до, либо после разделителя.
x <- c("1 - 2","2-1", "-3", "4", "-5-6", "-0.6", "20/200", "20/200-3")
stringr::str_match(x, '(-?\\d+)-?')[, 2]
#> [1] "1" "2" "-3" "4" "-5" "-0" "20" "20"
желаемый результат
#> [1] "1" "2" "-3" "4" "-5" "-0.6" "20/200" "20/200"
(Для любопытных: это для преобразования обозначений данных остроты зрения, которые говорят нам, насколько хорошо мы можем различать буквы на диаграмме. Это данные могут быть иногда очень беспорядочными, но обычно следуют определенному шаблону обозначений.)