[R] Putting x into the right subset
John Wiedenhoeft
wiedenhoeft at gmx.net
Sat Jul 22 15:21:31 CEST 2006
Dear Uwe,
Many thanks for your help! Unfortunately, your function doesn't do
exactly what I need (I slightly modified it, but I don't think that
caused the problem):
M <- list()
temp <- NA
for (i in 1:length(deppat))
{
a <- deppat[i]
b <- deptest[i]
x <- c(a, b)
if (i > 1)
temp <- which(sapply(M, function(y) any(x %in% y)))[1]
if(!is.na(temp))
M[[temp]] <- c(M[[temp]], x)
else
M[[length(M) + 1]] <- x
}
print(M)
print(length(M))
for (k in 1:length(M))
{
M[[k]] <- sort(unique(M[[k]]))
print(M[[k]])
}
deppat and deptest are equal in length. Additionaly, they may contain
values more than once. At the end, M shall contain exactly
length(unique(c(deppat, deptest))) variables, but it doesn't. Also,
there are some matches that remained undetected:
M[[1]] 1 5 6 11 22 24 28 29 31 35 49 57 58 62 65 75 80 81 85 86
M[[2]] 2 7 11 12 25 30 31 32 36 50 53 58 59 63 66 69 82 87
11, 31 and 58 occur in two subsets (there are more examples for larger
k).
I've tried to do it more graphic, but for some reason the same failure
occures:
M <- list()
for (j in 1:length(deppat))
{
for (listpos in 1:(length(M)+1))
{
if (listpos > length(M))
{
M[[listpos]] <- c(deppat[j], deptest[j])
break
}
else
{
if (deppat[j] %in% M[[listpos]] || deptest[j] %in%
M[[listpos]])
{
M[[listpos]] <- c(M[[listpos]], deppat[j], deptest[j])
break
}
}
}
}
print(M)
for (k in 1:length(M))
{
M[[k]] <- sort(unique(M[[k]]))
print(M[[k]])
}
There must be an error in reasoning, but I can't figure out where it
is...
Cheers,
John
More information about the R-help
mailing list