У меня есть список из нескольких векторов. Я хотел бы проверить, равны ли все векторы в списке. Есть identical
, который работает только для парного сравнения. Поэтому я написал следующую функцию, которая выглядит уродливо для меня. Тем не менее я не нашел лучшего решения. Вот мой RE:проверить, все ли элементы списка равны в R
test_true <- list(a=c(1,2,3),b=c(1,2,3),d=c(1,2,3))
test_false <- list(a=c(1,2,3),b=c(1,2,3),d=c(1,32,13))
compareList <- function(li){
stopifnot(length(li) > 1)
l <- length(li)
res <- lapply(li[-1],function(X,x) identical(X,x),x=li[[1]])
res <- all(unlist(res))
res
}
compareList(test_true)
compareList(test_false)
Любые предложения? Существуют ли какие-либо собственные проверки для идентичности для более чем простого сравнения?
Не ответ, но вы можете изменить свой 'lapply' на' sapply' и сбросить пару строк из вашей функции. – A5C1D2H2I1M1N2O1R2T1
Тело вашей функции может быть заменено на 'all (sapply (li, same, li [[1]])). –