我下面的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]))发布于 2020-10-22 15:00:32
另一种方法是使用purrr库:
purrr::map_dfr(ch, ~ coef(lm(math ~ ses, data=hsb, subset=sch.id== .)))发布于 2020-10-22 14:56:11
您可以使用单个lapply调用,而不是将同一模型拟合两次。
result <- do.call(rbind, lapply(ch,function(i)
coef(lm(math~ses,data=hsb,subset=sch.id==i))))如果希望将result作为列表,请使用asplit:
asplit(result, 2)https://stackoverflow.com/questions/64476789
复制相似问题