Jaki jest najlepszy sposób porównania więcej niż dwóch obiektów z all.equal()
?R: all.equal() dla wielu obiektów?
Oto jeden ze sposobów:
foo <- c(1:10)
bar <- letters[1:10]
baz <- c(1:10)
# doesn't work because all.equal() returns a character vector when objects not all equal
all(sapply(list(bar, baz), all.equal, foo))
# this works
mode(sapply(list(bar, baz), all.equal, foo)) == "logical" #FALSE
bar <- c(1:10)
mode(sapply(list(bar, baz), all.equal, foo)) == "logical" #TRUE
UPDATE: @BrodieG wskazał, że jedna wkładka powyżej tylko mówi, czy obiekty są równe, czy nie, natomiast all.equal()
mówi, co nie jest równa o nich, jeśli nie są równi.
Dobry pomysł - jest w stanie wykryć różnice między zakaz pierwszych elementów byłby przydatny. A co z generowaniem macierzy par nazw, aby uniknąć autoreferencji w 'outer()'? 'names <- c (" foo "," bar "," faz "); pary <- t (combn (imiona, 2)); zastosuj (pary, 1, funkcja (x) all.equal (get (x [1]), get (x [2]))) ' – treysp
@treysp, uzgodniono, zobacz moją modyfikację. – BrodieG