[R] is.constant 2
Christian Hoffmann
christian.hoffmann at wsl.ch
Wed Sep 22 13:29:38 CEST 2004
>>x <- c(1, 2, NA)
>>>>is.constant(x)
>
>>
>> [1] TRUE
>>
>> For data such as c(1, 1, 1, NA), I should think the safest answer
should be
>> NA, because one really doesn't know whether that last number is 1 or
not.
>>
>> Andy
>>
>My version is
>is.constant <- function(x) {
> if (is.numeric(x) & !any(is.na(x))) identical(min(x), max(x)) else
>FALSE
>}
Since the issue of factors surfaced, I improved my function:
is.constant <- function(x) {
if (is.factor(x)) (length(attributes(x)$levels)==1) &&
(!any(is.na(as.character(x))))
else (is.numeric(x) && !any(is.na(x)) && identical(min(x), max(x)))
}
is.constant(rep(c(sin(pi/2),1),10)) # TRUE
x <- factor(c(1,1,NA))
is.constant(x) # FALSE because of NA
is.constant(x[1:2]) # TRUE
is.constant(c(1,1,NA)) # FALSE because of NA
is.constant(c(1,1,2)) # FALSE
is.constant(c(1,1,1)) # TRUE
--
Dr.sc.math.Christian W. Hoffmann,
http://www.wsl.ch/staff/christian.hoffmann
Mathematics + Statistical Computing e-mail: christian.hoffmann at wsl.ch
Swiss Federal Research Institute WSL Tel: ++41-44-73922- -77 (office)
CH-8903 Birmensdorf, Switzerland -11(exchange), -15 (fax)
More information about the R-help
mailing list