Jika elemen-elemennya sama, perbedaannya adalah nol.
all(diff(vec1)==0)#[1] TRUE
Atau bandingkan vektor dengan elemen pertamanya.
all(vec1 == vec1[1])#[1] TRUE
Edit.
Beberapa cara untuk menentukan apakah semua elemen vektor adalah sama dipasang, lihat RHertel , Yuriy Saraykin , tmfmnk . Berikut ini adalah tes perbandingan.
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)
mengembalikan apa?unique
elemenlength(unique(vec1)) == 1
Jawaban:
Pilihannya adalah
diff
.Jika elemen-elemennya sama, perbedaannya adalah nol.
Atau bandingkan vektor dengan elemen pertamanya.
Edit.
Beberapa cara untuk menentukan apakah semua elemen vektor adalah sama dipasang, lihat RHertel , Yuriy Saraykin , tmfmnk . Berikut ini adalah tes perbandingan.
sumber
Gunakan varians. Jika semua elemen vektor sama, variansnya nol:
sumber
hitung jumlah nilai unik
sumber
Kita dapat menggunakan
n_distinct
daridplyr
sumber
Anda dapat mengonversinya menjadi faktor dan mendapatkan level yang seharusnya hanya bernilai 1 jika semuanya sama.
sumber
Anda juga dapat menghitung standar deviasi dan menilai apakah itu nol:
Atau menggunakan
table()
:Atau menggunakan
rle()
:sumber