二次调用函数导致R中的不同输出

二次调用函数导致R中的不同输出,r,function,R,Function,我有一个名为foo1的函数,它工作得非常好。但是,当我使用第二个函数调用foo1时,它不会返回与foo1相同的输出,我缺少什么(真的很困惑) 参见下面的可复制示例: foo1 <- function(data, cat.level = 0, code = NULL){ cod <- if(is.numeric(code)) deparse(substitute(code)) else code mods <- c("genre","profic") A <-

我有一个名为
foo1
的函数,它工作得非常好。但是,当我使用第二个函数调用
foo1
时,它不会返回与
foo1
相同的输出,我缺少什么(真的很困惑)

参见下面的可复制示例:

foo1 <- function(data, cat.level = 0, code = NULL){

  cod <- if(is.numeric(code)) deparse(substitute(code)) else code

  mods <- c("genre","profic")

A <- setNames(lapply(seq_along(mods), function(i) table(data[[mods[i]]])), mods)
Ls <- lapply(A, length)

A <- A[Ls >= cat.level]

if(!is.null(code)){
target <- sapply(seq_along(A), function(i) any(names(A[[i]]) == cod))
A <- A[target]
}
return(A)
}
# EXAMPLE OF PERFECT USE:
d1 <- read.csv("https://raw.githubusercontent.com/rnorouzian/m/master/v4.csv", h = T)#DATA

foo1(d1, cat.level = 0, code = 77)     # Works perfect! RETURNS A OF LIST TABLES
如果
debug(foo1)
然后单独运行它,您会看到它正确地找到了
“77”
。我将逐步完成以下几行:

debug(foo1)
foo1(d1,类别级别=0,代码=77)
#在中调试:foo1(d1,cat.level=0,code=77)
#…剪断。。。
#调试时间#2:cod
foo2 <- function(data, cat.level = 6, code = NULL){

  foo1(data = data, cat.level = cat.level, code = code) # simply call `foo1`
}

# EXAMPLE OF FAILURE:
foo2(d1, cat.level = 0, code = 77)
# > named list()                      # NOTHING RETURNS