كيف يمكنك أن تعرف أي وظائف في R يتم وضع علامة للتصحيح؟
سؤال
ولقد تم استخدام 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
لا تنتمي إلى StackOverflow