1 | idmatchv2(m1, m2, id.col1, id.col2 = id.col1)
|
m1 |
|
m2 |
|
id.col1 |
|
id.col2 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 | ##---- Should be DIRECTLY executable !! ----
##-- ==> Define data, use random,
##-- or do help(data=index) for the standard data sets.
## The function is currently defined as
function (m1, m2, id.col1, id.col2 = id.col1)
{
flag = !is.na(m1[, id.col1])
m1 = m1[flag, ]
flag = !is.na(m2[, id.col1])
m2 = m2[flag, ]
M1 = NULL
idnm1 = NULL
ic1 = 0
idnm2 = NULL
ic2 = 0
if (sum(duplicated(m1)) > 0)
stop("Duplicate ids detected in m1")
if (sum(duplicated(m2)) > 0)
stop("Duplicate ids detected in m2")
for (i in 1:nrow(m1)) {
flag = duplicated(c(m1[i, id.col1], m2[, id.col2]))
if (sum(flag) == 0) {
ic1 = ic1 + 1
idnm1[ic1] = i
}
if (sum(flag > 0)) {
if (is.data.frame(m1)) {
if (!is.null(dim(M1)))
M1 = rbind(M1, as.data.frame(m1[i, ]))
if (is.null(dim(M1)))
M1 = as.data.frame(m1[i, ])
}
if (!is.data.frame(m1)) {
if (!is.null(dim(M1)))
M1 = rbind(M1, m1[i, ])
if (is.null(dim(M1)))
M1 = matrix(m1[i, ], nrow = 1)
}
}
}
M2 = NULL
for (i in 1:nrow(m2)) {
flag = duplicated(c(m2[i, id.col2], m1[, id.col1]))
if (sum(flag) == 0) {
ic2 = ic2 + 1
idnm2[ic2] = i
}
if (sum(flag > 0)) {
if (is.data.frame(m2)) {
if (!is.null(dim(M2)))
M2 = rbind(M2, as.data.frame(m2[i, ]))
if (is.null(dim(M2)))
M2 = as.data.frame(m2[i, ])
}
if (!is.data.frame(m2)) {
if (!is.null(dim(M2)))
M2 = rbind(M2, m2[i, ])
if (is.null(dim(M2)))
M2 = matrix(m2[i, ], nrow = 1)
}
}
}
m = cbind(M1[, id.col1], M1[, -id.col1], M2[, -id.col2])
nc1 = ncol(m2) - 1
m1u = NULL
if (!is.null(idnm1))
m1u = m1[idnm1, ]
m2u = NULL
if (!is.null(idnm2))
m2u = m2[idnm2, ]
list(m = m, idnm1 = idnm1, idnm2 = idnm2, m1.no = m1u, m2.no = m2u)
}
|
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.