কোনও ভেক্টর একই উপাদানগুলির সমন্বয়ে গঠিত কিনা তা কীভাবে জানবেন?


12

কোনও ভেক্টরটিতে একই উপাদান রয়েছে কিনা তা আমি কীভাবে পরীক্ষা করতে পারি?

উদাহরণস্বরূপ বলা যাক আমার কাছে রয়েছে:

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

আমি কীভাবে দেখাব যে vec1এতে সমস্ত একই উপাদান রয়েছে?


diff(vec1)কি ফিরিয়ে দেয়?
রুই বারাদাস

1
অথবা এক uniqueউপাদান
rawr

1
কোড হিসেবে @rawr উত্তরlength(unique(vec1)) == 1
GWD

উত্তর:


12

একটি বিকল্প হয় diff

diff(vec1)

উপাদানগুলি সমান হলে, তাদের পার্থক্য শূন্য।

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

অথবা ভেক্টরকে তার প্রথম উপাদানটির সাথে তুলনা করুন।

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

সম্পাদনা করুন।

কোনও ভেক্টরের সমস্ত উপাদান সমান কিনা তা নির্ধারণের বেশ কয়েকটি উপায় পোস্ট করা হয়েছে, দেখুন আরহের্টেল , ইউরি সারায়কিন , টিএমএফএমএনকে । এখানে তুলনামূলক পরীক্ষা দেওয়া হচ্ছে।

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

এখানে চিত্র বর্ণনা লিখুন


7

বৈকল্পিক ব্যবহার করুন। যদি কোনও ভেক্টরের সমস্ত উপাদান সমান হয় তবে তারতম্যটি শূন্য:

allElementsEqual <- function(x) {!var(x)}

#allElementsEqual(vec1)
#[1] TRUE
#allElementsEqual(vec2)
#[1] FALSE


2

আমরা n_distinctথেকে ব্যবহার করতে পারেনdplyr

library(dplyr)
n_distinct(vec1)

1

আপনি এটিকে একটি ফ্যাক্টারে রূপান্তর করতে পারেন এবং স্তরগুলি পেতে পারেন যা কেবলমাত্র 1 মান হওয়া উচিত যদি সেগুলি একই হয়।

vec1 <- (10,20)

vec <- factor(vec1)

levels(vec)

1

আপনি স্ট্যান্ডার্ড বিচ্যুতিও গণনা করতে পারেন এবং এটি শূন্য কিনা তা মূল্যায়ন করতে পারেন:

sd(vec1) == 0

[1] TRUE

বা ব্যবহার table():

length(table(vec1)) == 1

বা ব্যবহার rle():

length(rle(vec1)$lengths) == 1
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.