3
> str(a)
 Named int [1:5] 0 0 0 0 0
 - attr(*, "names")= chr [1:5] "Var2" "Var3" "Var4" "Var5" ...
> str(b)
 Named int [1:5] 0 0 0 0 0
 - attr(*, "names")= chr [1:5] "Var1" "Var2" "Var3" "Var4" ...
> identical(a,b)
[1] FALSE

identicalベクトルの内容だけでなく、名前も比較することに気付きました。

手動で削除せずに名前のチェックを回避するにはどうすればよいですか?

4

3 に答える 3

4

compareパッケージを検討できます:

library(compare)
a <- c(Var2=0, Var3=0, Var4=0)
b <- c(Var1=0, Var2=0, Var3=0)
compare(a, b, allowAll=TRUE)
# TRUE
#  renamed
#  dropped names

この関数は、いくつかの異なる変換を試みて、値を等しくできるかどうかを確認します。この場合、オブジェクトの名前が変更され、名前が削除されました。

于 2013-04-18T15:12:02.523 に答える
3

これにより、望ましい結果が得られます。

> identical( unname(a), unname(b))
[1] TRUE

これにより、有用な結果が得られますが、誤解を招く情報が得られます。

> mapply("==", a ,b)
Var2 Var3 Var4 Var5 Var6 
TRUE TRUE TRUE TRUE TRUE 
于 2013-04-18T18:07:01.240 に答える