r - 在 R 中保存与模式不匹配的对象
问题描述
我想将全局环境中的大多数对象保存到一个文件中,使用save()
. 我想排除的对象可以用一个简单的正则表达式匹配,但据我所知,不能使用 perl 风格的正则表达式的pattern
参数ls()
,所以我不能使用负前瞻匹配。
有没有一种直接的方法来保存一些对象,同时排除一些与正则表达式匹配的对象?
这是一个玩具示例。在现实生活中,要保存的对象的名称差异很大,而且它们太多了,无法全部匹配:
# objects to save
foo <- c(1:10)
bar <- c(10:20)
foobar <- c(foo, bar)
asdf_uyi <- 100
qwer2bcdefg <- "some letters"
# don't save these
meh <- c(20:30)
meh2 <- meh * 2
# try to save everything that DOESN'T match "meh"
# this throws an 'Invalid regexp' error because ls() doesn't support negative lookaheads
save(file = "not-meh.RData", list = ls(pattern = ("^(?!meh)"))
解决方案
如果没有 perl 正则表达式(但是您可以添加perl=TRUE
到grepl()
, 因为它不会错):
save(file = "not-meh.RData", list = ls()[!grepl("^meh", ls())])
使用 perl 负查找正则表达式:
save(file = "not-meh.RData", list = ls()[grepl("^(?!meh)", ls(), perl=TRUE)])
推荐阅读
- jmeter - JMeter写入文件脚本正在复制打印
- fiware - Authzforce 权限创建问题
- java - Log4j2 以编程方式添加 asyncLogger
- java - 来自 Tomcat 中 REST Web 应用程序的奇怪响应文本编码
- python - python list.append 弄乱了数字的小数位
- angular - 将 ng-content 元素的宽度设置为通过的子元素的大小
- mongodb - MongoDB returning error - Failed to produce a solution for TEXT under OR - other non-TEXT clauses under OR have to be indexed as well
- docker - openmaptiles-server 无法使用 docker 工作
- ios - 以编程方式创建和添加 Passpoint 配置文件
- javascript - 如何跟踪单选按钮更改?