递归因子向量比较函数中的C堆栈使用错误

时间:2018-10-08 10:04:25

标签: r recursion

我正在尝试编写一个函数,将五个因子的向量与类似向量的列表进行比较。该函数必须计算不匹配的因子变量,并在发现不匹配少于2个的比较时停止并返回TRUE。如果找不到这样的匹配项,则必须返回FALSE。

我的功能如下:

recur_eval <- function(vector_input,data_comparison,counter=0,verifier=FALSE){
    if(counter>nrow(data_comp)){return(FALSE)}
    if(verifier=TRUE){return(TRUE)}
    else {
        counter_upd <- counter+1
        mismatches<- sum(!(data_input==data_comparison[counter_upd]))
        mismatch_check <- mismatches<2
        recur_eval(data_input,data_comparison,counter=counter_upd,verifier=mismatch_check)
    }
}

在大多数情况下,它运行良好,但是当它通过约1900行的比较数据而没有找到有效的匹配项时,它将返回:

Error in is_atomic(x) && is_scalar_atomic(y)
C stack usage  7957892 is too close to the limit

该功能有问题还是更多是系统限制问题?另外,我对递归函数还是陌生的,因此对函数的任何改进将不胜感激

0 个答案:

没有答案