我想从一个R-package calle myPackageId中导出所有函数,这些函数不是以句点开头而是以字符串“myPackageId_”开头。 具有第二种模式的函数由Cc代码中的Rcpp自动生成为“RcppExport SEXP myPackageId_cFunctionname”,不应由包导出。
我找到了一个使用非消费正则表达式的解决方案:
exportPattern("(?=^[^\\.])(?=^(?!myPackageId_))")
这适用于带有选项perl = TRUE的R grep。但是,带有扩展RE和R CMD INSTALL的默认R grep会抱怨模式无效。
words <- c(".test","test","myPackageId_test")
grep("(?=^[^\\.])(?=^(?!myPackageId_))",words, perl=TRUE)
grep("(?=^[^\\.])(?=^(?!myPackageId_))",words)
在上面的例子中,单词“test”将被接受,而其他单词“.test”和“myPackageId_test”将不被接受。
预期输入均为valid R names。这些是由没有空格的ASCII字符组成的常用单词。在R中,句号“。”也可以起名。
我是否可以使用grep选项perl = FALSE来实现相同的目标? 或者,我可以在NAMESPACE文件中以某种方式告诉R使用perl变体和grep吗?