मेरा lapply(sapply())
नीचे ठीक काम करता है। लेकिन मैं सोच रहा था कि क्या lapply(sapply())
जैसे दो के बजाय लूपिंग फ़ंक्शन में केवल एक कॉल का उपयोग करने का कोई तरीका है या कोड को छोटा करने का कोई तरीका है?
hsb <- read.csv('https://raw.githubusercontent.com/rnorouzian/e/master/hsb.csv')
ch <- unique(hsb$sch.id)
ols <- lapply(1:2,function(j)sapply(ch,function(i)coef(lm(math~ses,data=hsb,subset=sch.id==i))[j]))
0
rnorouzian
22 अक्टूबर 2020, 09:52
2 जवाब
सबसे बढ़िया उत्तर
दूसरा तरीका purrr
लाइब्रेरी का उपयोग करना होगा:
purrr::map_dfr(ch, ~ coef(lm(math ~ ses, data=hsb, subset=sch.id== .)))
2
AlexB
22 अक्टूबर 2020, 10:00
आप एक ही मॉडल को दो बार फ़िट करने के बजाय एक lapply
कॉल का उपयोग कर सकते हैं।
result <- do.call(rbind, lapply(ch,function(i)
coef(lm(math~ses,data=hsb,subset=sch.id==i))))
यदि आप result
को सूची के रूप में उपयोग करना चाहते हैं asplit
:
asplit(result, 2)
2
Ronak Shah
22 अक्टूबर 2020, 09:56