Fixed bugs in size() for non-sequential x
This commit is contained in:
parent
8ecc59a4e6
commit
11bdefab7c
1 changed files with 3 additions and 3 deletions
6
R/size.R
6
R/size.R
|
|
@ -2,7 +2,7 @@
|
||||||
#' @description This functions tries to replicate the behavior of the base function "size" in Matlab
|
#' @description This functions tries to replicate the behavior of the base function "size" in Matlab
|
||||||
#' @param x object to be evaluated
|
#' @param x object to be evaluated
|
||||||
#' @param d dimension of object to be evaluated
|
#' @param d dimension of object to be evaluated
|
||||||
#' @note On MATLAB, size(1, 100) returns 1. As a matter of fact, if the user
|
#' @note On MATLAB, size(1, 100) returns 1. As a matter of fact, if the user
|
||||||
#' calls for a dimension which x doesn't have `size()` always returns 1. R's
|
#' calls for a dimension which x doesn't have `size()` always returns 1. R's
|
||||||
#' default behavior is more reasonable in those cases (i.e., returning NA),
|
#' default behavior is more reasonable in those cases (i.e., returning NA),
|
||||||
#' but since the point of this function is to replicate MATLAB behaviors
|
#' but since the point of this function is to replicate MATLAB behaviors
|
||||||
|
|
@ -25,12 +25,12 @@ size <- function(x, d) {
|
||||||
n_dim <- ifelse(is.null(dim(x)), 1, length(dim(x)))
|
n_dim <- ifelse(is.null(dim(x)), 1, length(dim(x)))
|
||||||
if (missing(d)) {
|
if (missing(d)) {
|
||||||
if (n_dim == 1) {
|
if (n_dim == 1) {
|
||||||
out <- range(x)
|
out <- c(1, length(x))
|
||||||
} else {
|
} else {
|
||||||
out <- dim(x)
|
out <- dim(x)
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
out <- ifelse(n_dim == 1, range(x)[d], dim(x)[d])
|
out <- ifelse(n_dim == 1, c(1, length(x))[d], dim(x)[d])
|
||||||
if (is.na(out)) out <- 1 # for MATLAB compatibility
|
if (is.na(out)) out <- 1 # for MATLAB compatibility
|
||||||
}
|
}
|
||||||
return(out)
|
return(out)
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue