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

在R语言中用正则表达式排除含点号文件名的问题求助

解决R语言list.files排除含点文件名的问题

你之前写的正则逻辑不对,[^\\.]或者[^.]仅能匹配单个非点字符,而list.files的pattern参数默认是匹配文件名中任意位置的子串——只要文件名里存在非点字符就会被选中,自然达不到排除含点文件的效果。

给你两种可行的解决思路:

方案一:用正确正则直接匹配无点文件名

使用正则^[^.]+$,它的含义是「从文件名开头到结尾的所有字符都不是点」,代码如下:

list.files(R.home(), pattern = "^[^.]+$")

其中^匹配字符串开头,[^.]+匹配一个或多个非点字符,$匹配字符串结尾,确保整个文件名里完全不含点。

方案二:先获取全量文件再过滤

如果觉得正则不好记,可以先拿到所有文件列表,再反向过滤掉含有点的文件:

# 基础R写法
all_files <- list.files(R.home())
no_dot_files <- all_files[!grepl("\\.", all_files)]

或者用tidyverse工具集的写法(需先加载stringr包):

library(stringr)
no_dot_files <- list.files(R.home()) %>% str_subset("\\.", negate = TRUE)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 17:32:00