You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

R语言ls(pattern)匹配异常:空格规则命中下划线变量的原因与解决

R语言ls()正则匹配异常问题分析与修复

问题原因

R中ls()函数的pattern参数接收的是正则表达式,而非操作系统文件匹配常用的通配符规则:

  • 你写的"Accuracy *"中,*在正则语法里代表「匹配前面的字符0次或多次」,也就是说该规则匹配的是「包含Accuracy字符串,且后面跟0个或多个空格」的所有变量名
  • Accuracy_3的变量名开头就是Accuracy,且后面没有空格,符合「0个空格」的匹配条件,因此会被误纳入匹配结果

修复方案

调整pattern的正则表达式,实现仅匹配Accuracy后带空格的变量即可,推荐两种写法:

  1. 精确要求Accuracy后至少存在1个空格,正则写为"Accuracy +",+在正则中代表「匹配前面的字符1次或多次」
  2. 更严谨的写法,增加开头匹配锚定^,避免变量名中间包含Accuracy的对象被误匹配,正则写为"^Accuracy\\s+",\\s可以匹配所有空白字符(包括空格、制表符等),适配性更强

修复后代码示例

library(dplyr)

`Accuracy 1` <- data.frame (Product  = "10001",
                            Bias = 0.4,
                            Variance = 0.1,
                            Disturbance = 0.5)

`Accuracy 2` <-  data.frame (Product  = "20001",
                               Bias = 0.1,
                               Variance = 0.1,
                               Disturbance = 0.8)

`Accuracy_3` <-  data.frame (Product  = "30001",
                             x = "test",
                             y = 0.1,
                             z = 0.2,
                             w = "why")

# 调整pattern参数即可
acc_output <-  mget(ls(pattern="^Accuracy\\s+")) %>%
  bind_rows()

运行后acc_output仅会包含Accuracy 1和Accuracy 2的合并结果,不会误纳入Accuracy_3。

内容的提问来源于stack exchange,提问作者LGe

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 02:06:04