を使用しidentical
ます。これがRの「スカラー」比較演算子です。ベクトルではなく、単一の論理値を返します。
apply(A, 2, identical, a)
# a b c
# TRUE TRUE FALSE
A
が実際のデータフレームである場合は、マトリックスへの入力を強制するため、sapply
またはを使用することをお勧めします。vapply
apply
d <- c("a", "b", "c")
B <- data.frame(a, b, c, d)
apply(B, 2, identical, a) # incorrect!
# a b c d
# FALSE FALSE FALSE FALSE
sapply(B, identical, a) # correct
# a b c d
# TRUE TRUE FALSE FALSE
ただし、data.frame
特に要求しない限り、文字入力をファクターに強制することに注意してください。
sapply(B, identical, d) # incorrect
# a b c d
# FALSE FALSE FALSE FALSE
C <- data.frame(a, b, c, d, stringsAsFactors = FALSE)
sapply(C, identical, d) # correct
# a b c d
# FALSE FALSE FALSE TRUE
同一は、all
+を使用するよりもかなり高速です==
:
library(microbenchmark)
a <- 1:1000
b <- c(1:999, 1001)
microbenchmark(
all(a == b),
identical(a, b))
# Unit: microseconds
# expr min lq median uq max
# 1 all(a == b) 8.053 8.149 8.2195 8.3295 17.355
# 2 identical(a, b) 1.082 1.182 1.2675 1.3435 3.635