ベクトルは同じ要素で構成されている場合方法を知っていますか?

カルロ:

ベクトルはすべて同じ要素を持っているかどうかはどのように確認できますか?

たとえばのは、私が持っているとしましょう:

vec1 = rep(10,20)
vec2 = seq(1:20)

どのように私はそれを表示することができvec1、すべて同じ要素を持っていますか?

ルイBarradas:

オプションがありますdiff

diff(vec1)

要素が等しい場合、その差はゼロです。

all(diff(vec1) == 0)
#[1] TRUE

またはその最初の要素へのベクトルを比較します。

all(vec1 == vec1[1])
#[1] TRUE

編集。

ベクトルのすべての要素が等しいかどうかを決定するいくつかの方法を参照して、投稿したRHertelユーリーSaraykintmfmnkをここでは比較試験です。

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()

ここでは、画像の説明を入力します。

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=369140&siteId=1