首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >遇到R函数的因子问题

遇到R函数的因子问题
EN

Stack Overflow用户
提问于 2016-07-22 23:38:09
回答 1查看 44关注 0票数 0

我有一个名为gwas.data的data.frame

代码语言:javascript
复制
        SNP A1 A2         EFF     FRQ
2353 rs10001803  A  G -0.06620391 0.06860
2307 rs10002573  T  C -0.03969763 0.78100
504  rs10003143  A  C  0.03829721 0.53170
1802  rs1001022  T  C  0.08159842 0.96174
461  rs10011564  T  C  0.04930432 0.27840
2331 rs10013187  A  C -0.03600030 0.54490

我还有一个名为correct.orientation的帧

代码语言:javascript
复制
      SNP   CLST A1 A2  FRQ IMP       POS CHR BVAL
54445  rs10001803 Brahui  G  A 1.00   1 157121506   4  898
49713  rs10002573 Brahui  C  T 0.26   0  31120097   4  983
52885  rs10003143 Brahui  A  C 0.42   0 114272159   4  918
193805  rs1001022 Brahui  T  C 0.98   0  24733488  22  970
48257  rs10011564 Brahui  T  C 0.10   1  18734768   4  863
52313  rs10013187 Brahui  C  A 0.34   1 103040573   4  908

我正在尝试使两个文件之间的A1和A2列相匹配。如果从correct.orientation翻转gwas.data的列,那么我希望将它们翻转到正确的方向。如果我反转它们,我还想更改EFF列的符号,并取(1-FRQ)作为FRQ列。下面是我目前正在尝试使用的代码:

代码语言:javascript
复制
gwas.data <- MatchAlleles ( gwas.data , assoc.loci.freqs)    
MatchAlleles <- function ( gwas.data , assoc.loci.freqs ) {

            if ( nrow ( gwas.data ) != nrow ( correct.orientation ) ) {
                    stop ( "GWAS dataset and Orientation Matching dataset contain differing numbers of SNPs" )
            }

            flip <- gwas.data$A1 == correct.orientation$A2 & gwas.data$A2 == correct.orientation$A1
            dont.flip <- gwas.data$A1 == correct.orientation$A1 & gwas.data$A2 == correct.orientation$A2
            for ( i in 1 : nrow ( gwas.data ) ) {
                    if ( flip [ i ] ) {
                            gwas.data$A1 [ i ] <- correct.orientation$A1 [ i ]
                            gwas.data$A2 [ i ] <- correct.orientation$A2 [ i ]
                            gwas.data$EFF [ i ] <- - gwas.data$EFF [ i ]
                            gwas.data$FRQ [ i ] <- 1 - gwas.data$FRQ [ i ]
                    } else if ( dont.flip [ i ] ) {
                            #do nothing
                    } else {
                            stop ( "Strand Issue")
                    }
            }
    return ( gwas.data )
    }

assoc.loci.freqs术语是不相关的,包含在原始代码中,但在函数中位置较高,不会对此产生影响。当我尝试使用这段代码时,我得到了错误:Error in Ops.factor(gwas.data$A1, correct.orientation$A2) : level sets of factors are different这是什么原因造成的?

EN

回答 1

Stack Overflow用户

发布于 2016-11-09 01:52:53

会不会是某个核苷酸在gwas.data$A1中,而不是correct.orientation$A2中?使用上面给出的示例,来自A1的因子级别是AT,而来自A2的因子级别是ATC

@dayne评论中的建议应该绕过这个问题。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38530454

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档