Foro de debate

Resolver fórmulas con R

Re: Resolver fórmulas con R

de Mónica Mir Florit -
Número de respuestas: 0
Hola de nuevo!

Ya tengo escritas todas las fórmulas y los resultados me dan lo que toca. La función es esta:

resultats <- function(bCODBOD, BOD, VSS, COD, sBOD, sCOD, TSS, TKNpa, T, NH3Ne, DO, Q, TKN, MLSS, NO3Ne, RAS, tanoxic1, tanoxic2, rbCOD, SDNR1, SDNR2, tdanoxic, tanaerobic, IRp, P) {

 

bCOD <- bCODBOD*BOD

 

nbCOD <- COD-bCOD

 

nbVSS <- VSS*(1-((bCODBOD)*(BOD-sBOD)/(COD-sCOD)))

 

iTSS <- TSS-VSS

 

SF <- TKNpa

 

knt <- kn*kn0^(T-20)

 

kdnt <- kdn*kdn0^(T-20)

 

unmt <- unm*unm0^(T-20)

 

un <- (unmt*NH3Ne)/(knt+NH3Ne)*(DO/(ko+DO))-kdnt

 

kst <- ks*ks0^(T-20)

 

kdt <- kd*kd0^(T-20)

 

umt <- um*um0^(T-20)

 

SRTtheo <- 1/un

 

SRT <- SRTtheo*SF

 

S <- kst*(1+kdt*SRT)/(SRT*(umt-kdt)-1)

 

Pxbh <- Q*Y*(bCOD-S)/(1+kdt*SRT)

 

Pxdead <- fd*kdt*Q*Y*(bCOD-S)*SRT/(1+kdt*SRT)

 

Nox1 <- 0.8*TKN

 

Pxbnit1 <- Q*Yn*Nox1/(1+kdnt*SRT)

 

Pxbio1 <- Pxbh+Pxdead+Pxbnit1

 

Nox2 <- TKN-NH3Ne-0.12*Pxbio1/Q

 

Pxbnit2 <- Q*Yn*Nox2/(1+kdnt*SRT)

 

Pxbio2 <- Pxbh+Pxdead+Pxbnit2

 

Nox3 <- TKN-NH3Ne-0.12*Pxbio2/Q

 

Pxbnit3<- Q*Yn*Nox3/(1+kdnt*SRT)

 

Pxbio3 <- Pxbh+Pxdead+Pxbnit3

 

Pxvss <- Pxbio3+Q*nbVSS

 

Pxtss <- Pxbio3/0.88+Q*nbVSS+Q*(TSS-VSS)

 

MassMLVSS <- Pxvss*SRT

 

MassMLSS <- Pxtss*SRT

 

Vaerobic <- MassMLSS/MLSS

 

taerobic <- Vaerobic/Q

 

thaerobic <- taerobic*24

 

VSSfraction <- MassMLVSS/MassMLSS

 

MLVSS <- MLSS*VSSfraction

 

observedyield <- Pxtss/(Q*(bCOD-S))*bCODBOD

 

Xb <- SRT*Q/Vaerobic*(Y*bCOD/(1+kdt*SRT))

 

IR <- Nox3/NO3Ne-1-RAS

 

Noxfeed <- (IR*Q+RAS*Q)*NO3Ne

 

Vanoxic1 <- tanoxic1*Q

 

Vanoxic2 <- tanoxic2*Q

 

FMb1 <- Q*BOD/(Vanoxic1*Xb)

 

FMb2 <- Q*BOD/(Vanoxic2*Xb)

 

rbCODbCOD <- rbCOD/bCOD

 

SDNRt1 <- SDNR1*1.026^(T-20)

 

SDNRt2 <- SDNR2*1.026^(T-20)

 

NOr1 <- Vanoxic1*SDNRt1*Xb

 

NOr2 <- Vanoxic2*SDNRt2*Xb

 

Excesscap1 <- NOr1/Noxfeed

 

Excesscap2 <- NOr2/Noxfeed

 

Vanoxic <- tdanoxic*Q

 

Vanaerobic <- tanaerobic*Q

 

NO3reac <- NO3Ne*IRp/(1+IRp)

 

rbCODremov <- NO3reac*rbCODrem

 

rbCODava <- rbCOD-rbCODremov

 

biorem <- rbCODava/rbCODreq

 

Pbiomassg <- (Pxbh+Pxbnit3)*Pbac/Q

 

Premov <- Pbiomassg+biorem

 

Peff <- P-Premov

 

res <- c(bCOD, nbCOD, nbVSS, iTSS, SF, knt, kdnt, unmt, un, kst, kdt, umt, SRTtheo, SRT, S, Pxbh, Pxdead, Nox1, Pxbnit1, Pxbio1, Nox2, Pxbnit2, Pxbio2, Nox3, Pxbnit3, Pxbio3 , Pxvss, Pxtss, MassMLVSS, MassMLSS, Vaerobic, taerobic, thaerobic, VSSfraction, MLVSS, observedyield, Xb, IR, Noxfeed, Vanoxic1, Vanoxic2, FMb1, FMb2, rbCODbCOD, SDNRt1, SDNRt2, NOr1, NOr2, Excesscap1, Excesscap2, Vanoxic, Vanaerobic, NO3reac, rbCODremov, rbCODava, biorem, Pbiomassg, Premov, Peff)

 

names(res) <- c("bCOD", "nbCOD", "nbVSS", "iTSS", "SF", "knt", "kdnt", "unmt", "un", "kst", "kdt", "umt", "SRTtheo", "SRT", "S", "Pxbh", "Pxdead", "Nox1"," Pxbnit1", "Pxbio1", "Nox2", "Pxbnit2", "Pxbio2", "Nox3", "Pxbnit3", "Pxbio3" , "Pxvss", "Pxtss", "MassMLVSS", "MassMLSS", "Vaerobic", "taerobic", "thaerobic", "VSSfraction", "MLVSS", "observedyield", "Xb", "IR", "Noxfeed", "Vanoxic1", "Vanoxic2", "FMb1", "FMb2", "rbCODbCOD", "SDNRt1", "SDNRt2", "NOr1", "NOr2", "Excesscap1", "Excesscap2", "Vanoxic", "Vanaerobic", "NO3reac", "rbCODremov", "rbCODava", "biorem", "Pbiomassg", "Premov", "Peff")

 

return(res) }

 

Donde por ejemplo, los valores de las variables podrían ser estas:
resultats(1.6, 140, 60, 300, 70, 132, 70, 1.5, 12, 0.5, 2, 22464, 35, 3000, 6, 0.6, 0.104, 0.0625, 80, 0.22, 0.31, 0.0625, 0.0625, 2, 6)

(las constantes (kn, kdn, unm...) las tengo guardadas en el programa)

Lo que quiero preguntaros es a ver si es posible coger el valor de las variables, por ejemplo, de una data.frame. Es decir, si yo tuviera algo así:

Variable
Valor
Q
22464
T
12
BOD
140
...
...

Y para llamar la función indicarle dónde ir a buscar cada valor de la variable en la tabla. De esta manera, en el momento de cambiar el valor de las variables sería más fácil.
No sé si me he explicado bien...

Gracias!