微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

r ls list.files 模式大括号扩展通配符不起作用

如何解决r ls list.files 模式大括号扩展通配符不起作用

我需要在 R 函数 patternbase::lsbase::list.files 参数中使用大括号展开。例如:

# in terminal
ls
# string1  stringX  stringYZ
ls string{1,X}
# string1  stringX

但是

# in R
list.files()
# "string1"  "stringX"  "stringYZ"
list.files(pattern="string{1,X}")
# error: invalid 'pattern' regular expression
list.files(pattern="string\\{1,X\\}")
# character(0) # i.e. finds nothing
list.files(pattern=glob2rx("string{1,X}"))
# character(0) # i.e. finds nothing

base::ls 也是如此。

非常感谢您的帮助,
克里斯

解决方法

list.files(pattern="^string(1|X)$") 有效(list.files(pattern="string(1|X)") 也是如此)。 谢谢!

,

sh 中类似 filename=log_file-$(date +%Y.%m.%d) touch $filename { who; df -h; ps -aux; } > $log_dir/$filename 的结果,您可以使用:

ls string{1,X}

或者,正如@wiktor-stribiżew 在评论中指出的那样,您可以使用:

list.files(pattern="^string(1|X)$")

要进行完整的字符串匹配,您必须用 list.files(pattern="^string[1X]$") ^ 将模式括起来。感谢 @wiktor-stribiżew 的评论。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。