Li, Aiguo (NIH/NCI) [E]
2017-Feb-02 19:54 UTC
[R] need help to generate an intersection matrix
Dear all,
I am new to r script and run into some difficulty with this simple task.
Here is my data: I need to find out the number of mutual intersected elements as
shown below
data
pathway1 A B C D E
pathway2 A C F
pathway3 B D E
output
pathway1 pathway2
pathway3
pathway1 5 2
3
pathway2 2 3
0
pathway3 3 0
3
here is my script
tb = matrix(data =NA, nrow = 3, ncol = 3)
for(i in 1:3){
for(j in 1:3){
tb[i,j]=length(intersect(data[i,][!is.na(data[i,])],
data[j,][!is.na(data[j,])]))
}
}
Ana
[[alternative HTML version deleted]]
Hi Ana,
Here is one way:
pathway1<-LETTERS[1:5]
pathway2<-c("A","C","F")
pathway3<-c("B","D","E")
intersect.mat<-matrix(0,nrow=3,ncol=3)
rownames(intersect.mat)<-paste("pathway",1:3,sep="")
colnames(intersect.mat)<-paste("pathway",1:3,sep="")
for(row in 1:3) {
for(col in 1:3)
intersect.mat[row,col]<-
sum(get(rownames(intersect.mat)[row])%in%
get(colnames(intersect.mat)[col]))
}
Jim
On Fri, Feb 3, 2017 at 6:54 AM, Li, Aiguo (NIH/NCI) [E]
<liai at mail.nih.gov> wrote:> Dear all,
>
> I am new to r script and run into some difficulty with this simple task.
> Here is my data: I need to find out the number of mutual intersected
elements as shown below
> data
> pathway1 A B C D
E
> pathway2 A C F
> pathway3 B D E
>
> output
> pathway1 pathway2
pathway3
> pathway1 5 2
3
> pathway2 2 3
0
> pathway3 3 0
3
>
> here is my script
> tb = matrix(data =NA, nrow = 3, ncol = 3)
> for(i in 1:3){
> for(j in 1:3){
>
> tb[i,j]=length(intersect(data[i,][!is.na(data[i,])],
data[j,][!is.na(data[j,])]))
> }
> }
>
> Ana
>
> [[alternative HTML version deleted]]
>
> ______________________________________________
> R-help at r-project.org mailing list -- To UNSUBSCRIBE and more, see
> 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.