[R] Evaluation failure of IAPWS95 functions in a rowwise manner (tidyverse style)
Shawn Way
SW@y @end|ng |rom meco@com
Wed May 30 21:50:47 CEST 2018
The printed output is an issue (I've emailed the maintainer about it) however, I think I figured it out.
It seems that the function is not vectorized, making me need to do the following:
mutate(SG=map2(T,p,function(x,y) DTp(x,y))
This was able to get the correct results. Like usual, the error was between the head and the keyboard.
Thanks!
Shawn Way
-----Original Message-----
From: Ista Zahn <istazahn using gmail.com>
Sent: Wednesday, May 30, 2018 2:28 PM
To: Shawn Way <SWay using meco.com>
Cc: r-help using r-project.org
Subject: Re: [R] Evaluation failure of IAPWS95 functions in a rowwise manner (tidyverse style)
Hi Shawn,
I don't think it has anything to do with the tidyverse. If you keep simplifying your example you'll get all the way down to
> DTp(T=c(279,294),p=c(0.46,0.46))
[1] 1000.12283
--Ista
On Wed, May 30, 2018 at 2:14 PM, Shawn Way <SWay using meco.com> wrote:
> I'm trying to use the IAPWS95 package with the tidyverse packages. For some reason, the function is not outputting the correct rho.
>
> A minimal example with results is below. I've also included the definition of the DTp function from the IAPWS95 library.
> ====================================
> library(IAPWS95)
> library(tidyverse)
>
> initial <- data.frame(T=c(279,294),p=c(0.46,0.46))
> initial2 <- initial %>%
> mutate(rho=DTp(T,p))
>
>> DTp
> function (T, p)
> {
> y <- 0
> icode <- 0
> res <- .Fortran("DTp", as.double(T), as.double(p), as.double(y),
> as.integer(icode))
> options(digits = 9)
> if (res[[4]] != 0) {
> error <- as.character(errorCodes[which(errorCodes[, 1] ==
> res[[4]]), 2])
> print(error)
> }
> print(res[[3]])
> }
> <bytecode: 0x0000000006f520e0>
> <environment: namespace:IAPWS95>
>
> Results:
>
>> initial2
> T p rho
> 1 279 0.46 1000.12283
> 2 294 0.46 1000.12283
>
>
> What the results should be:
>
>> initial2
> T p rho
> 1 279 0.46 1000.12283
> 2 294 0.46 998.19167
>
> I think something is evaluating incorrectly, but I don't know enough about NSE vs SE to figure this out.
>
> Any thoughts to what could be the reason why the second row has the same rho as the first? When I run the function DTp individually, I get the right results.
>
>
> Shawn Way
>
>
>
> ______________________________________________
> R-help using r-project.org mailing list -- To UNSUBSCRIBE and more, see
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide
> http://www.R-project.org/posting-guide.html
> and provide commented, minimal, self-contained, reproducible code.
More information about the R-help
mailing list