Added proportion2str
This commit is contained in:
parent
be1d759fff
commit
11efa94ee8
6 changed files with 56 additions and 22 deletions
|
|
@ -5,6 +5,7 @@ export(calculatePopLogml)
|
||||||
export(computeRows)
|
export(computeRows)
|
||||||
export(learn_simple_partition)
|
export(learn_simple_partition)
|
||||||
export(ownNum2Str)
|
export(ownNum2Str)
|
||||||
|
export(proportion2str)
|
||||||
export(randdir)
|
export(randdir)
|
||||||
export(repmat)
|
export(repmat)
|
||||||
importFrom(stats,runif)
|
importFrom(stats,runif)
|
||||||
|
|
|
||||||
19
R/admix1.R
19
R/admix1.R
|
|
@ -675,22 +675,3 @@ admix1 <- function(tietue) {
|
||||||
# else
|
# else
|
||||||
# diary off
|
# diary off
|
||||||
# end
|
# 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
21
R/proportion2str.R
Normal 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)
|
||||||
|
}
|
||||||
4
TODO.md
4
TODO.md
|
|
@ -30,3 +30,7 @@ Function | Argument | Value | Matlab output | R output
|
||||||
`ownNum2Str` | `number` | `NaN` | `'NAN'` | error
|
`ownNum2Str` | `number` | `NaN` | `'NAN'` | error
|
||||||
`ownNum2Str` | `number` | `<vector>` | `'<vector elements>'` | `'<vector elements>'` + warning
|
`ownNum2Str` | `number` | `<vector>` | `'<vector elements>'` | `'<vector elements>'` + warning
|
||||||
`repmat` | `length(n)` | `> 2` | > 2D matrix | 2D matrix
|
`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
21
man/proportion2str.Rd
Normal 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.
|
||||||
|
}
|
||||||
|
|
@ -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(1), "1")
|
||||||
expect_equal(ownNum2Str(-123456789), "-123456789")
|
expect_equal(ownNum2Str(-123456789), "-123456789")
|
||||||
expect_equal(ownNum2Str(0), "0")
|
expect_equal(ownNum2Str(0), "0")
|
||||||
expect_error(ownNum2Str("a"))
|
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", {
|
test_that("computeRows behaves like on Matlab", {
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue