This is a test version of Biostars. For the public version, visit https://www.biostars.org.
plotting venndiagram and find the overlap in R for rsid between model and vcf files.

Hello, I want to plot overlap between two datasets. My first dataset is:

enter image description here

dput(rsid_en_vcf[1:43,])
c("rs782629217", "rs782403204", "rs199529001", "rs147880041", 
"rs141826009", "rs199826048", "rs200558688", "rs782114919", "rs41304577", 
"rs200311430", "rs147114528", "rs200635479", "rs41288741", "rs782167952", 
"rs6560827", "rs200242637", "rs144539776", "rs41305669", "rs41288743", 
"rs41288743", "rs369736529", "rs148025238", "rs41298226", "rs782272071", 
"rs9329304", "rs9329305", "rs137895574", "rs142619172", "rs144154384", 
"rs782777737", "rs782796368", "rs782443786", "rs782246853", "rs150779790", 
"rs782304204", "rs9329306", "rs144740103", "rs4431953", "rs189892388;rs75953774", 
"rs61839057", "rs61839058", "rs145405488", "rs782307404")

My second dataset is:

enter image description here

dput(en_Brain_Cortex7[1:10,])
structure(list(RSID1 = c("rs2085346", "rs12765102", "rs11250286", 
"rs1876899", "rs11250293", "rs4880776", "rs7094850", "rs883660", 
"rs4880780", "rs4880487")), row.names = c(NA, -10L), class = c("tbl_df", 
"tbl", "data.frame"))

I want to plot a venndiagram with overlap for these two datasets. This is what I did:

venn.diagram(
    x = list(rsid_en_vcf,en_Brain_Cortex7),
    category.names = c("elasticnet_model","rsid_vcf"),
    filename = 'venn_diagramm.png',
    output=TRUE
)

But it gives an error:

Error:
! Must subset rows with a valid subscript vector.
i Logical subscripts must match the size of the indexed input.
x Input has size 157608 but subscript `!duplicated(x, fromLast = fromLast, ...)` has size 0.
rsid venndiagram overlap

not a real answer to your specific question but you could try some online tools to get a venn diagram (if getting the venn is the goal of all this).

eg. DrawVenn

1 answer

When you consult the documentation of the function with ?venn.diagram, you will see that x needs to be A list of vectors (e.g., integers, chars), with each component corresponding to a separate circle in the Venn diagram.

If you run for example class(en_Brain_Cortex7), it will however return you [1] "tbl_df" "tbl" "data.frame". So you need to provide the function with the data in the correct format. class(en_Brain_Cortex7$RSID1) for example is "character" (chars).

So

venn.diagram(
    x = list(en_Brain_Cortex7[,"RSID1"], rsid_en_vcf[,1]),
    category.names = c("elasticnet_model","rsid_vcf"),
    filename = 'venn_diagramm.png',
    output=TRUE
)

should work. (Be careful that the columns are indeed characters and not factors). Possibly, you also need to take care of chained entries like rs189892388;rs75953774 in rsid_en_vcf...

Log in to answer this question.