假设我有五个向量:
A<-1:10
B<-1:10
C<-1:10
D<-1:10
E<-1:12
Run Code Online (Sandbox Code Playgroud)
我可以使用相同的()一次测试两个.
identical(A,C)
Run Code Online (Sandbox Code Playgroud)
但我想立刻测试所有这些,看看是否有任何不同于其他的.是否有捷径可寻?
Gre*_*gor 28
我会选择一个,比方说A,然后进行所有成对比较.
all(sapply(list(B, C, D, E), FUN = identical, A))
# [1] FALSE
Run Code Online (Sandbox Code Playgroud)
删除all()以查看不相同的一个
sapply(list(B, C, D, E), FUN = identical, A)
# [1] TRUE TRUE TRUE FALSE
Run Code Online (Sandbox Code Playgroud)
identical应该是传递的,因此,如果A是相同的C,并D,然后C应该是相同的D.
(感谢@docendo discimus的简化语法.)
cde*_*man 13
首先想到的是unique在矢量列表上做并检查长度.如果有两个或多个不同的向量,则结果列表的长度将大于1.
length(unique(list(A,B,C,D))) == 1
[1] TRUE
length(unique(list(A,B,C,D,E))) == 1
[1] FALSE
Run Code Online (Sandbox Code Playgroud)
Mat*_*rde 10
另一种选择,只是为了好玩:
Vectorize(identical, 'x')(list(A, B, C, D, E), C)
Run Code Online (Sandbox Code Playgroud)