28

2 つの同一の列を持つ data というデータ フレームがあるとします。

A B
1 1
2 2
3 3
4 4

これらの 2 つの列が同一であるかどうかを確認し、それを示す1 つの論理値を返すにはどうすればよいですか? 非常に基本的な擬似コードは次のとおりです。

if(data$A == data$B)
{
   print("Column A and B are identical")
}

私はこれを少しいじっていましたが、不必要に複雑に見えない方法を見つけていません。ありがとう。

4

3 に答える 3

29

使用できますall()

> data <- data.frame(A=c(1,2,3,4), B=c(1,2,3,4))
> all(data$A == data$B)
[1] TRUE
于 2013-04-10T05:45:21.580 に答える
4

これはあなたの問題にとってやり過ぎかもしれませんがcompare()、「比較」パッケージから調べることもできます。次の例を検討してください。

> data <- data.frame(A = c(1, 2, 3, 4), B = c(1, 2, 3, 4))
> compare(data[1], data[2]) ## Should be false
FALSE [TRUE]
> compare(data[1], data[2], ignoreNames = TRUE) # Allow different names
TRUE
  dropped names
> data <- data.frame(A = c(1, 2, 3, 4), B = as.character(c(1, 2, 3, 4)))
> str(data) ## "B" is now a factor, so use `coerce` to test for equality
'data.frame':   4 obs. of  2 variables:
 $ A: num  1 2 3 4
 $ B: Factor w/ 4 levels "1","2","3","4": 1 2 3 4
> compare(data[1], data[2], ignoreNames = TRUE, coerce = TRUE)
TRUE
  [A] coerced from <factor> to <numeric>
  dropped names

一般的な論理引数 がありallowAll、これを に設定しTRUEて、compare関数が異なる変換を試行して等価性をテストできるようにします。

于 2013-04-10T06:52:22.117 に答える