Added proportion2str

This commit is contained in:
Waldir Leoncio 2019-12-17 16:38:55 +01:00
parent be1d759fff
commit 11efa94ee8
6 changed files with 56 additions and 22 deletions

View file

@ -5,6 +5,7 @@ export(calculatePopLogml)
export(computeRows)
export(learn_simple_partition)
export(ownNum2Str)
export(proportion2str)
export(randdir)
export(repmat)
importFrom(stats,runif)

View file

@ -675,22 +675,3 @@ admix1 <- function(tietue) {
# else
# diary off
# end
# %------------------------------------------------------
# function str = proportion2str(prob)
# %prob belongs to [0.00, 0.01, ... ,1].
# %str is a 4-mark presentation of proportion.
# if abs(prob)<1e-3
# str = '0.00';
# elseif abs(prob-1) < 1e-3;
# str = '1.00';
# else
# prob = round(100*prob);
# if prob<10
# str = ['0.0' num2str(prob)];
# else
# str = ['0.' num2str(prob)];
# end;
# end;

21
R/proportion2str.R Normal file
View file

@ -0,0 +1,21 @@
#' @title Convert proportion to string
#' @param prob belongs to [0.00, 0.01, ... ,1]
#' @return a 4-mark presentation of proportion
#' @note The `round` function in R, being ISO-compliant, rounds 8.5 to 8. The
#' Matlab equivalent rounds it to 9.
#' @export
proportion2str <- function (prob) {
if (abs(prob) < 1e-3) {
str <- '0.00'
} else if (abs(prob - 1) < 1e-3) {
str <- '1.00'
} else {
prob <- round(100 * prob)
if (prob < 10) {
str <- paste0('0.0', as.character(prob))
} else {
str <- paste0('0.', as.character(prob))
}
}
return(str)
}

View file

@ -30,3 +30,7 @@ Function | Argument | Value | Matlab output | R output
`ownNum2Str` | `number` | `NaN` | `'NAN'` | error
`ownNum2Str` | `number` | `<vector>` | `'<vector elements>'` | `'<vector elements>'` + warning
`repmat` | `length(n)` | `> 2` | > 2D matrix | 2D matrix
As general remarks, one should keep in mind that:
- For compliance with IEC 60559, the `round` in base R rounds .5 to the nearest even integer, whereas the homonym function in Matlab rounds up (or down, if negative).

21
man/proportion2str.Rd Normal file
View file

@ -0,0 +1,21 @@
% Generated by roxygen2: do not edit by hand
% Please edit documentation in R/proportion2str.R
\name{proportion2str}
\alias{proportion2str}
\title{Convert proportion to string}
\usage{
proportion2str(prob)
}
\arguments{
\item{prob}{belongs to [0.00, 0.01, ... ,1]}
}
\value{
a 4-mark presentation of proportion
}
\description{
Convert proportion to string
}
\note{
The `round` function in R, being ISO-compliant, rounds 8.5 to 8. The
Matlab equivalent rounds it to 9.
}

View file

@ -37,11 +37,17 @@ test_that("learn*partition behaves like on Matlab", {
)
})
test_that("ownNum2Str behaves like on Matlab", {
test_that("type convertions behave like on Matlab", {
expect_equal(ownNum2Str(1), "1")
expect_equal(ownNum2Str(-123456789), "-123456789")
expect_equal(ownNum2Str(0), "0")
expect_error(ownNum2Str("a"))
expect_equal(proportion2str(1), "1.00")
expect_equal(proportion2str(0), "0.00")
expect_equal(proportion2str(0.4), "0.40")
expect_equal(proportion2str(0.89), "0.89")
expect_equal(proportion2str(-0.4), "0.0-40") # also bugged in original
# TODO: fix after release, as long as it doesn't break anything else
})
test_that("computeRows behaves like on Matlab", {