On 14/12/2015 11:45 AM, Hadley Wickham wrote:
>> I wonder if R is missing an equality operator for this case. Currently:
>>
>> * == is suboptimal because it's vectorised
>> * all.equal is suboptimal because it returns TRUE or a text string
>> * identical is suboptimal because it doesn't do common coercions
>>
>> Do we need another function (equals()?) that uses the same coercion
>> rules as == but isn't vectorised? (Like == it would only work with
>> vectors, so you'd still need identical() for (e.g.) comparing
>> environments)
>
> I don't think so. We already have all(), so all(x == y) would do what you
> want.
But that recycles, which is what we're trying to avoid here.
I think this is too special a case to need a function. Usually all(x ==
y) is the test you want, because so many R functions will recycle. It's
not so when x is the dim of an array. So I could see a weak argument
for an equalDim() function, but I think it's better just to use
stopifnot(length(dim) == 2, all(dim == c(3,4)))
I know the all() in the second arg isn't needed, but I think it makes
the intention clearer. I think there would be less confusion if
stopifnot() required its args to be single logical values, so I usually
try to use it that way.
Duncan Murdoch
______________________________________________
R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.