o seu exp2 e' uma lista de listas... note que a funcao usada para exp2 retorna "list(preditos)", ao inves de 'preditos' apenas...

adicionalmente, vc nao quer do.call('rbind', exp2), mas sim do.call('c', exp2), ou - muito mais simples - unlist(exp2).

mas, o melhor mesmo, seria vc ajustar o modelo de uma vez so:

##start
osDados <- dados
osDados[['caso']] <- factor(osDados[['caso']])

fit <- lm(y~x*caso, data=osDados)
b0 <- rbind(caso1=c(1, 0, 0, 0, 0, 0),
            caso2=c(1, 0, 1, 0, 0, 0),
            caso3=c(1, 0, 0, 1, 0, 0))
b1 <- rbind(caso1=c(0, 1, 0, 0, 0, 0),
            caso2=c(0, 1, 0, 0, 1, 0),
            caso3=c(0, 1, 0, 0, 0, 1))

interceptos <- b0 %*% coef(fit)
coefAngular <- b1 %*% coef(fit)

library(gmodels)
estimable(fit, b0)
estimable(fit, b1)

pred <- predict(fit)
## end

b

2011/5/4 Gustavo Marcatti <vgp.gustavo@yahoo.com.br>
Bom dia a todos!
Quando desejo extrair os coeficientes de diversos ajustes, por exemplo, procedo da seguinte maneira:
x<-1:60
y<-rep(sort(abs(rnorm(20))),3)
caso <- rep(1:3,each = 20)
dados <- data.frame(caso,x,y)
exp1 <- lapply(split(dados,dados["caso"]),FUN=function(data){
            coefs <- coef(lm(y ~ x, data=data))
            unlist(coefs)
        })
do.call("rbind",exp1)
 
Minha dúvida é como faço para extrair um vetor de varios casos, assim como no exemplo abaixo:
exp2 <- lapply(split(dados,dados["caso"]),FUN=function(data){
            preditos <- fitted(lm(y ~ x, data=data))
            list(preditos)
        })
do.call("rbind",exp2)
 
O resultado esperado seria um único vetor de tamanho 60 x 1 contendo todos os valores preditos para cada ajuste.
 
Obs1: Esse exemplo é apenas para ilustrar, não é o que realmente estou precisando.
Obs2: Os casos tem tamanhos variados, não exatamente 20 observações.
 
Gustavo Marcatti
Eng. Florestal
UFV
 
 
 

_______________________________________________
R-br mailing list
R-br@listas.c3sl.ufpr.br
https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br




--
Successful people ask better questions, and as a result, they get better answers. (Tony Robbins)