Я нашел работу вокруг этой проблемы в моем скрипте, как показано ниже, но почему это происходит?Список объектов 'ls()' с совпадением шаблонов - слишком много совпадений
Использование ls(pattern= ...)
с использованием дикой карты приводит к большему количеству результатов, чем фактическое совпадение, если между символом * и шаблоном не требуется дополнительный символ или пробел.
Я чувствую, что здесь отсутствует основное правило сопоставления шаблонов. Спасибо за вашу помощь.
b_fa=NULL
b_fb=NULL
b_fc=NULL
b_fd=NULL
ls(pattern="b_fa*")
[1] "b_fa" "b_fb" "b_fc" "b_fd"
ls(pattern=b_fa_*)
[1] "b_fa"
Хотя Wrongly Making an Empty Match делает прикосновение к подобным проблемам не попасть в сердце этого вопроса, а именно: Почему с помощью * удалить букву предыдущей к ней при обнаружении совпадения?
прочитал документацию 'regex'. '*' также для 0-кратного символа перед – jogo
@jogo: Я понимаю, что описанное вами использование * выполняется в соответствии с регулярным выражением (regex), и в этом случае это означает, что предыдущий элемент будет соответствовать нулю или более раз . "{регулярная документация}. –
После дальнейшего чтения я думаю, что я решил проблему. Хотя в документации по регулярному выражению «A» регулярное выражение является ** шаблоном **, который описывает набор ** строк *. регулярные выражения могут фактически быть любым единственным значением, которое не является метасимволом, таким как * или +, поэтому, когда a * помещается перед регулярным символом, он рассматривает его как регулярное выражение и обрабатывает единственный символ, как описывает @jogo. –