I have a vcf file with individual level genetic data, that I read using the R package vcfR

gen <- read.vcfR('test.vcf')

Scanning file to determine attributes.
File attributes:
  meta lines: 9
  header_line: 10
  variant count: 152
  column count: 3798
Meta line 9 read in.
All meta lines processed.
gt matrix initialized.
Character matrix gt created.
  Character matrix gt rows: 152
  Character matrix gt cols: 3798
  skip: 0
  nrows: 153
  row_num: 0
Processed variant: 153
All variants processed

How do I convert this file to a data frame that I can use for a GWAS or Mendelian Randomization study?

I was told that this should be a data frame where each column is a genetic variant and it take values 0, 1, or 2, depending on the number of "mutations".

I never worked with genetic data before and do not know much about genetics.

  • $\begingroup$ Welcome to Bioinformatics.StackExchange! GWAS is a broad area, and there are numerous tools you could use. The format of your data will depend on which tool you are using, and hopefully this will be clearly documented in the tool's manual. If on the other hand you're trying to implement your own tool, you'll have to be much more specific about what you want (or are required) to accomplish. $\endgroup$ Commented Mar 26, 2019 at 16:35
  • $\begingroup$ Welcome to the site! Could you please explain what have you tried? For instance, what happens if you use as(gen, "data.frame")? $\endgroup$
    – llrs
    Commented Mar 26, 2019 at 16:57
  • $\begingroup$ I found that I can use extract.gt, then transform the matrix. Entries in this matrix are "0/0", "0/1", "1/0", and "1/1". I now have to recode these to 0, 1, 1, 2. $\endgroup$
    – spore234
    Commented Mar 27, 2019 at 7:59

1 Answer 1


If you want to do GWAS or mendelian randomisation, you can do it with Plink (v2) which should be faster than R.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.