كيف يمكنك أن تعرف أي وظائف في R يتم وضع علامة للتصحيح؟

StackOverflow https://stackoverflow.com/questions/1614889

  •  06-07-2019
  •  | 
  •  

سؤال

ولقد تم استخدام debug() في كثير من الأحيان الآن، ولكن في بعض الأحيان أتساءل التي تم وضع علامة ظائف لتصحيح الأخطاء. وأنا أعلم أنه يمكنك استخدام isdebugged() لمعرفة ما إذا كان يتم وضع وظيفة معينة. ولكن هل هناك طريقة لR لسرد كافة الوظائف التي يتم تصحيحه؟

هل كانت مفيدة؟

المحلول

وهذا هو معقد، لكنه يعمل:

 find.debugged.functions <- function(environments=search()) {
    r <- do.call("rbind", lapply(environments, function(environment.name) {
    return(do.call("rbind", lapply(ls(environment.name), function(x) {
          if(is.function(get(x))) {
             is.d <- try(isdebugged(get(x)))
             if(!(class(is.d)=="try-error")) {
                return(data.frame(function.name=x, debugged=is.d))
             } else { return(NULL) }
          }
       })))
     }))
     return(r)
 }

ويمكنك تشغيله في جميع البيئات الخاصة بك مثل ذلك:

find.debugged.functions()

وأو مجرد الخاص بك في ".GlobalEnv" مع هذا:

 > find.debugged.functions(1)
             function.name debugged
 1 find.debugged.functions    FALSE
 2                    test     TRUE

وهنا أنا خلقت اختبار وظيفة التي أنا التصحيح.

نصائح أخرى

وإلا إذا كنت أرغب في الحصول على شيء من هذا القبيل كتابة وظيفة لاطلاق النار كل شيء من خلال isdebugged ()، وأنا لا أعتقد أنك تستطيع.

في debug.c، وdo_debug وظيفة هو ما يتحقق من العلم DEBUG يتم تعيين على كائن. لا يوجد سوى ثلاث وظائف R التي تدعو الدعوة do_debug C: debug، undebug وisdebugged

.
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top