[R] Check results between two data.frame
Sarah Goslee
sarah.goslee at gmail.com
Wed Mar 21 17:13:46 CET 2012
As long as == is an appropriate test for your data, why not just use
R's innate ability to handle matrices/data frames?
> x1 <- matrix(1:20, ncol=4)
> x2 <- ifelse(x1 > 18, 22, x1)
> x1
[,1] [,2] [,3] [,4]
[1,] 1 6 11 16
[2,] 2 7 12 17
[3,] 3 8 13 18
[4,] 4 9 14 19
[5,] 5 10 15 20
> x2
[,1] [,2] [,3] [,4]
[1,] 1 6 11 16
[2,] 2 7 12 17
[3,] 3 8 13 18
[4,] 4 9 14 22
[5,] 5 10 15 22
> x1 == x2
[,1] [,2] [,3] [,4]
[1,] TRUE TRUE TRUE TRUE
[2,] TRUE TRUE TRUE TRUE
[3,] TRUE TRUE TRUE TRUE
[4,] TRUE TRUE TRUE FALSE
[5,] TRUE TRUE TRUE FALSE
On Wed, Mar 21, 2012 at 8:48 AM, HJ YAN <yhj204 at googlemail.com> wrote:
> Dear R-user,
>
> I'm trying to compare two sets of results and wanted to find out which
> element in the two data frame/matrix are different.
>
> I wrote the following function and it works ok, and gives me a long list of
> "good" as outcomes.
>
>
> CHECK<-
> function (x = "file1", y = "file2")
> {
> for (i in 1:nrow(x)) {
> for (j in 1:ncol(x)) {
> if (x[i, j] == y[i, j]) {
> print("good")
> }
> else {
> print("check")
> }
> }
> }
> }
>
>
> However, as the two datasets I was comparing are large (400*100 roughly),
> so I would like to create a matrix to identify which ones are not same in
> the two dataframes.
>
> So I added 'CHECK_XY' in my code but when I run it, I got 'Error in
> CHECK_XY[i, j] = c("good") : subscript out of bounds'.
>
> Could anyone help please??
>
> CHECK_1<-
> function (x = "file1", y = "file2")
> {
> NROW <- nrow(x)
> NCOL <- ncol(x)
> CHECK_XY <- as.matrix(NA, NROW, NCOL)
> for (i in 1:nrow(x)) {
> for (j in 1:ncol(x)) {
> if (x[i, j] == y[i, j]) {
> CHECK_XY[i, j] = c("good")
> }
> else {
> CHECK_XY[i, j] = c("check")
> }
> }
> }
> print(CHECK_XY)
> }
>
> Thanks!
> HJ
--
Sarah Goslee
http://www.functionaldiversity.org
More information about the R-help
mailing list