كيف يمكنني استدعاء مراقب النجوم على قائمة من النماذج?

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

  •  24-12-2019
  •  | 
  •  

سؤال

أنا فقط ركض سلسلة من النماذج بطريقة لطيفة ومرنة التي فرضت فصل رمز البيانات.كان لي قائمة لطيفة من الصيغ والنماذج في قسم التكوين بلدي الذي أنا lapply'د أكثر للحصول على قائمة الكائنات نموذج.الآن أريد عرضها في stargazer, ، لكنه لا يأخذ كائن قائمة.كيف أفعل هذا دون الحاجة إلى كتابة كل عنصر قائمة?

مثال قابل للتكرار:

require(stargazer)
l <- list()
l$lm1 <- lm(rating ~ complaints + privileges + learning + raises + critical,
data=attitude)
l$lm2 <- lm(rating ~ complaints + privileges + learning, data=attitude)
## create an indicator dependent variable, and run a probit model
attitude$high.rating <- (attitude$rating > 70)
l$prbt <- glm(high.rating ~ learning + critical + advance, data=attitude,
family = binomial(link = "probit"))
stargazer( l[[1]], l[[2]], l[[3]], title="Results", align=TRUE, type="text")
هل كانت مفيدة؟

المحلول

يرجى التأكد من أنك تستخدم إصدارا محدثا من الحزمة.بدءا من الإصدار 4.5.3 (متوفر على كران منذ نوفمبر 2013), stargazer كان قادرا على قبول قوائم الكائن بالطريقة التي تتوقعها بالضبط:

stargazer(l, title="Results", align=TRUE, type="text")

نصائح أخرى

استخدام do.call:

do.call( stargazer, l ) 

ومع ذلك ، فإن هذا يحول دون تمرير الحجج بالطريقة المعتادة:

> do.call( stargazer, l, type="text" )
Error in do.call(stargazer, l, type = "text") : 
  unused argument (type = "text")

لذلك ، يجب عليك إضافة الوسائط المسماة إلى القائمة:

l$type <- "text"
l$align <- TRUE
l$title <- "Results"
do.call( stargazer, l )

طريقة أخرى للقيام بذلك هي كاري وظيفة مراقب النجوم:

require(functional)
sgCurried <- Curry( stargazer, type="text" ) # all arguments to stargazer go in here
do.call( sgCurried, l )
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top