[R-br] transferir modelo da função nls para a função curve() automaticamente
Fernando Antonio de souza
nandodesouza em gmail.com
Terça Março 1 12:30:44 BRT 2016
Uma dúvida
Eu estou escrevendo um código utilizando o R panel. Ele é uma extensão do
código escrito pelo Walmes (no blog ridículas), no qual pretendo adaptá-lo
para trabalhar com mais modelos. No código abaixo pretendo fornecer
interfaces para a importação dos dados pelo usuário. O nome das variáveis
dependente e independente utilizada no banco de dados importado deve ser
fornecida pelo usuário e o código substitui o nome destas variáveis por y e
x para processamento.
Acontece que a função "var_nome" ela captura os nomes fornecidos pelo
usuário, no entanto não estou conseguindo realizar a mudança dos
respectivos nomes na base de dados. O comando colnames(da)[grep(
var_dep,colnames(da))]<-"y" funciona fora da função, mas não parece
funcionar dentro da função, uma vez que após rodar os comando abaixo e
digitar head(da), os nomes das colunas não são alterados.
No exemplo abaixo as colunas PG e Tempo, devem ser substituídas por Y e X
respectivamente
Como posso resolver isso?
require(rpanel)
database<-function(panel){
da<-read.csv(file.choose(), header=TRUE)
return(panel)
}
#-----------------------------------------------------------------------------
var_nome<-function(panel){
var_dep<<-panel$var_y
var_indep<<-panel$var_x
colnames(da)[grep(var_dep,colnames(da))]<-"y"
colnames(da)[grep(var_indep,colnames(da))]<-"x"
return(panel)
}
panel <- rp.control()
#botão para importar banco de dados
rp.button(panel, action=database, title="importar dados")
# Obtem os nomes das variáveis dependentes
rp.textentry(panel=panel, variable=var_y,
labels="nome da variável dependente(y):",
initval="",
action=var_nome)
rp.textentry(panel=panel, variable=var_x,
labels="nome da variável independente(x):",
initval="",
action=var_nome)
dput(da[1:134,])
da<-structure(list(Tubo = c(1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L,
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L,
2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 3L, 3L, 3L, 3L,
3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 4L,
4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L,
4L, 4L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L,
5L, 5L, 5L, 5L, 5L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L,
6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 7L, 7L, 7L, 7L, 7L, 7L, 7L, 7L,
7L, 7L, 7L, 7L, 7L, 7L, 7L, 7L, 7L, 7L, 7L, 8L), Amostra = c(1L,
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L,
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L,
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L,
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L,
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L,
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L,
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L,
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L,
1L, 1L, 1L, 1L, 2L), dieta = c(1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L,
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L,
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L,
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L,
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L,
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L,
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L,
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L,
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L), concentracao =
c(20L,
20L, 20L, 20L, 20L, 20L, 20L, 20L, 20L, 20L, 20L, 20L, 20L, 20L,
20L, 20L, 20L, 20L, 20L, 20L, 20L, 20L, 20L, 20L, 20L, 20L, 20L,
20L, 20L, 20L, 20L, 20L, 20L, 20L, 20L, 20L, 20L, 20L, 20L, 20L,
20L, 20L, 20L, 20L, 20L, 20L, 20L, 20L, 20L, 20L, 20L, 20L, 20L,
20L, 20L, 20L, 20L, 20L, 20L, 20L, 20L, 20L, 20L, 20L, 20L, 20L,
20L, 20L, 20L, 20L, 20L, 20L, 20L, 20L, 20L, 20L, 20L, 20L, 20L,
20L, 20L, 20L, 20L, 20L, 20L, 20L, 20L, 20L, 20L, 20L, 20L, 20L,
20L, 20L, 20L, 20L, 20L, 20L, 20L, 20L, 20L, 20L, 20L, 20L, 20L,
20L, 20L, 20L, 20L, 20L, 20L, 20L, 20L, 20L, 20L, 20L, 20L, 20L,
20L, 20L, 20L, 20L, 20L, 20L, 20L, 20L, 20L, 20L, 20L, 20L, 20L,
20L, 20L, 40L), Tempo = c(1L, 2L, 3L, 4L, 5L, 6L, 9L, 12L, 18L,
24L, 30L, 36L, 48L, 60L, 72L, 84L, 96L, 120L, 144L, 1L, 2L, 3L,
4L, 5L, 6L, 9L, 12L, 18L, 24L, 30L, 36L, 48L, 60L, 72L, 84L,
96L, 120L, 144L, 1L, 2L, 3L, 4L, 5L, 6L, 9L, 12L, 18L, 24L, 30L,
36L, 48L, 60L, 72L, 84L, 96L, 120L, 144L, 1L, 2L, 3L, 4L, 5L,
6L, 9L, 12L, 18L, 24L, 30L, 36L, 48L, 60L, 72L, 84L, 96L, 120L,
144L, 1L, 2L, 3L, 4L, 5L, 6L, 9L, 12L, 18L, 24L, 30L, 36L, 48L,
60L, 72L, 84L, 96L, 120L, 144L, 1L, 2L, 3L, 4L, 5L, 6L, 9L, 12L,
18L, 24L, 30L, 36L, 48L, 60L, 72L, 84L, 96L, 120L, 144L, 1L,
2L, 3L, 4L, 5L, 6L, 9L, 12L, 18L, 24L, 30L, 36L, 48L, 60L, 72L,
84L, 96L, 120L, 144L, 1L), PG = c(4.18, 6.16, 8.13, 9.94, 11.74,
13.72, 17.95, 20.77, 21.16, 21.16, 21.16, 21.16, 21.16, 21.16,
21.16, 21.16, 21.16, 21.16, 21.16, 3.56, 6.16, 9.77, 12.98, 15.35,
16.76, 20.15, 21.72, 22.51, 22.51, 22.51, 22.51, 22.51, 22.51,
22.51, 22.51, 22.51, 22.51, 22.51, 4.8, 8.81, 12.42, 14.62, 16.82,
18, 20.37, 21.78, 22.18, 22.18, 22.18, 22.18, 22.18, 22.18, 22.18,
22.18, 22.18, 22.18, 22.18, 3.96, 7.96, 12.19, 14.17, 15.97,
17.38, 19.58, 20.99, 21.95, 21.95, 21.95, 21.95, 21.95, 21.95,
21.95, 21.95, 21.95, 21.95, 21.95, 4.41, 8.02, 11.23, 13.43,
15.41, 16.82, 19.02, 20.6, 20.99, 20.99, 20.99, 20.99, 20.99,
20.99, 20.99, 20.99, 20.99, 20.99, 20.99, 4.58, 8.19, 11.01,
12.59, 14.39, 15.58, 17.55, 19.13, 20.09, 20.09, 20.09, 20.09,
20.09, 20.09, 20.09, 20.09, 20.09, 20.09, 20.09, 4.8, 8.19, 10.95,
12.93, 14.73, 16.31, 18.51, 20.09, 20.88, 20.88, 20.88, 20.88,
20.88, 20.88, 20.88, 20.88, 20.88, 20.88, 20.88, 4.58)), .Names = c("Tubo",
"Amostra", "dieta", "concentracao", "Tempo", "PG"), row.names = c(NA,
134L), class = "data.frame")
Em 27 de fevereiro de 2016 09:16, Éder Comunello <comunello.eder em gmail.com>
escreveu:
> Senhores, bom dia!
>
> Realmente o script disponibilizado pelo Walmes é muito bom. É pra aprender
> o caminho das pedras!
>
> Mas me surgiu uma ideia... Supondo que se queira apenas visualizar o
> ajuste do modelo, talvez bastasse utilizar predict() e depois adicionar os
> resultados ao gráfico.
>
> ### <code r>
> head(Orange, 3)
> mForm <- as.formula("circumference ~ A/(1+exp((B-age)/C))"); mForm;
> class(mForm)
> mExpr <- mForm[[3]]; mExpr; class(mExpr) # A/(1 + exp((B - age)/C))
>
> fm1 <- nls(mForm, Orange, start=list(A=160, B=700, C=350))
>
> new <- seq(xLim[1], xLim[2], len=101)
> pre1 <- predict(fm1, newdata=list(age=new))
>
> plot(circumference~age, Orange)
> lines(new, pre1, col=2)
> # title(mForm)
> title(mExpr)
> ### </code>
>
>
> ================================================
> Éder Comunello
> Agronomist (UEM), MSc in Environ. Sciences (UEM)
> DSc in Agricultural Systems Engineering (USP/Esalq)
> Brazilian Agricultural Research Corporation (Embrapa)
> Dourados, MS, Brazil |<O>|
> ================================================
> GEO, -22.2752, -54.8182, 408m
> UTC-04:00 / DST: UTC-03:00
>
>
>
>
> _______________________________________________
> R-br mailing list
> R-br em listas.c3sl.ufpr.br
> https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br
> Leia o guia de postagem (http://www.leg.ufpr.br/r-br-guia) e forneça
> código mínimo reproduzível.
>
--
=======================================================================
Fernando Souza
Zootecnista, DSc. Produção Animal
e-mail:nandodesouza em gmail.com
https://producaoanimalcomr.wordpress.com/
========================================================================
-------------- Próxima Parte ----------
Um anexo em HTML foi limpo...
URL: <http://listas.inf.ufpr.br/pipermail/r-br/attachments/20160301/9c471bdc/attachment.html>
Mais detalhes sobre a lista de discussão R-br