Nice problem!
If I understand you correctly, here's how to do it (with list-based matrices):
set.seed(1)
(x <- matrix(lapply(rpois(10,2)+1, function(k) sample(letters[1:10], size=k)), ncol=2,
dimnames=list(1:5,c("A","B"))))
A B
1 Character,2 Character,5
2 Character,2 Character,5
3 Character,3 Character,3
4 Character,5 Character,3
5 Character,2 "i"
x[1,1]
[[1]]
[1] "c" "b"
x[1,2]
[[1]]
[1] "c" "d" "a" "j" "f"
(y <- cbind(x, "A-B"=apply(x, 1, function(ab) setdiff(ab[[1]], ab[[2]]))))
A B A-B
1 Character,2 Character,5 "b"
2 Character,2 Character,5 "g"
3 Character,3 Character,3 Character,3
4 Character,5 Character,3 Character,2
5 Character,2 "i" Character,2
y[1,3]
[[1]]
[1] "b"
-- Tony Plate
esterhazy wrote:
Hi,
I have a matrix with two columns, and the elements of the matrix are
vectors.
So for example, in line 3 of column 1 I have a vector v31=("marc", "robert,
"marie").
What I need to do is to compare all vectors in column 1 and 2, so as to get,
for example setdiff(v31,v32) into a new column.
Is there a way to do this in R?
Thanks!
______________________________________________
R-help@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.