all.equal
関数を使用してR列の2つのデータフレームの要素の等価性をチェックしようとしていますが、これはforループを使用して行います。私はRに新しいので、2つのデータフレームを含むforループを書く方法がわかりません。R列の2つのデータフレームの要素の等価性を確認する
何か助けていただければ幸いです。
all.equal
関数を使用してR列の2つのデータフレームの要素の等価性をチェックしようとしていますが、これはforループを使用して行います。私はRに新しいので、2つのデータフレームを含むforループを書く方法がわかりません。R列の2つのデータフレームの要素の等価性を確認する
何か助けていただければ幸いです。
私はこの質問に答えられていないことに気付いたので、私は将来の参考のために答えを記入したと思った。
実例を提供するために、datasets
パッケージの一部としてRに付属するmtcars
データセットを使用します。
まず、mtcarsと比較するためのダミーデータセットを作成しましょう。このデータセットをmtcars2
とし、列5と11、drat
とcarb
を作成しましょう。元のmtcars
の対応するものとある程度は異なりますが、列1〜4および列6〜10はそのままです。列5と列11を「混乱させる」ために、簡単な乗算と組み合わせてjitter()
を使用します。
mtcars2 <- as.data.frame(cbind(mtcars[, 1:4], "drat" = jitter(mtcars[,5]) * 4,
mtcars[,6:10], "carb" = jitter(mtcars[,11])* 0.5))
は、だから今、私たちは私たちのために、ループでmtcars
と比較するダミーのデータセットを持っています。次に、forループの結果を書き込むdata.frameを準備します。比較する列の数と等しい数の行を持つdata.frameが必要です。対応するall.equal()
の結果を参照する列を示すには、という2つの列が必要です。そして、もちろん、私たちが呼び出すall_equal()
関数の結果を格納する別の列AE_result
が必要です。このdata.frame df_AE
とし、col_number
を数値ベクトル、AE_result
を文字ベクトルと宣言します。私たちは列の各ペアにall.equal
を呼び出して、カラムを通して我々の方法をカウントし、カウンタを書く(i
)とよ
width <- ncol(mtcars)
df_AE <- as.data.frame(matrix(0L, nrow = width, ncol = 2))
names(df_AE) <- c("col_number", "AE_result")
class(df_AE$col_number) <- "numeric"
class(df_AE$AE_result) <- "character"
だから今我々は、forループ実際の準備ができています、結果(x
)をdf_AE
data.frameに送信してください。
df_AE
> df_AE
col_number AE_result
1 1 TRUE
2 2 TRUE
3 3 TRUE
4 4 TRUE
5 5 Mean relative difference: 3.000102
6 6 TRUE
7 7 TRUE
8 8 TRUE
9 9 TRUE
10 10 TRUE
11 11 Mean relative difference: 0.4982218
:我々はdf_AE
を呼び出すときに for (i in 1:width) {
x <- all.equal(mtcars[, i], mtcars2[, i])
df_AE[i,1] <- i
df_AE[i,2] <- x
}
だから今、私たちはこのような何かを得るでしょう