我注意到我编写的R函数有一个奇怪的行为。函数是否返回不同的值,具体取决于函数是否与执行的代码存储在同一文件中,取决于参数的传输方式以及取决于参数的编码。
示例:
##Code part 1:
some_function <- function(str, pattern, pattern1 = "УИК №[0-9]+"){
cat(str_extract(str, pattern), "\n")
cat(str_extract(str, pattern1), "\n")
cat(str_extract(str, "УИК №[0-9]+"))
}
##Code part 2:
library(stringr)
some_function("УИК №221", pattern = "УИК №[0-9]+")
现在,如果“代码部分1”与“代码部分2”存储在同一R文件中,则一切正常,结果是 “УИК№221” “УИК№221” “УИК№221”。 但是,如果“代码部分1”存储在另一个R文件中,例如“ functions.R”,然后通过“ source(functions.R)”在“代码部分2”中调用它,然后此函数打印 “УИК№221” 不适用 不适用 有谁知道为什么会这样吗?
如果不使用西里尔字母,则函数存储在哪个文件中以及参数的传输方式都没有关系。
例如与更改的代码部分 代码第1部分: some_function <-function(str,pattern,pattern1 =“ UIK No [0-9] +”){ cat(str_extract(str,pattern),“ \ n”) cat(str_extract(str,pattern1),“ \ n”) cat(str_extract(str,“ UIK No [0-9] +”)) }
代码第2部分: 库(字符串) some_function(“ UIK No221”,pattern =“ UIK No [0-9] +”)
在两种情况下都显示打印结果 UIK No221 UIK No221 UIK No221。
对此,我们将不胜感激!