@rawr réponse en tant que codelength(unique(vec1)) == 1
GWD
Réponses:
12
Une option est diff.
diff(vec1)
Si les éléments sont égaux, leur différence est nulle.
all(diff(vec1)==0)#[1] TRUE
Ou comparez le vecteur à son premier élément.
all(vec1 == vec1[1])#[1] TRUE
Éditer.
Plusieurs façons de déterminer si tous les éléments d'un vecteur sont égaux ont été affichées, voir RHertel , Yuriy Saraykin , tmfmnk . Voici des tests comparatifs.
library(microbenchmark)
library(ggplot2)
f <-function(n){
x <- rep(10, n)
mb <- microbenchmark(
var = var(x)==0,
sd = sd(x)==0,
diff = all(diff(x)==0),
extract = all(x == x[1]),
unique = length(unique(x))==1)
mb
}
sizes <- c(10,100, seq(1e3,1e4, by =1e3))
mb_list <- lapply(sizes, f)
names(mb_list)<- sizes
res <- lapply(seq_along(mb_list),function(i){
agg <- aggregate(time ~ expr, mb_list[[i]], median)
agg$size <- sizes[i]
agg
})
res <- do.call(rbind, res)
ggplot(res, aes(size, time, colour = expr))+
geom_point()+
geom_line()
diff(vec1)
renvoie quoi?unique
élémentlength(unique(vec1)) == 1
Réponses:
Une option est
diff
.Si les éléments sont égaux, leur différence est nulle.
Ou comparez le vecteur à son premier élément.
Éditer.
Plusieurs façons de déterminer si tous les éléments d'un vecteur sont égaux ont été affichées, voir RHertel , Yuriy Saraykin , tmfmnk . Voici des tests comparatifs.
la source
Utilisez la variance. Si tous les éléments d'un vecteur sont égaux, la variance est nulle:
la source
compter le nombre de valeurs uniques
la source
Nous pouvons utiliser à
n_distinct
partir dedplyr
la source
Vous pouvez le convertir en facteur et obtenir les niveaux qui ne devraient être qu'une seule valeur s'ils sont tous identiques.
la source
Vous pouvez également calculer l'écart type et évaluer s'il est nul:
Ou en utilisant
table()
:Ou en utilisant
rle()
:la source