1

R に大きなデータ フレーム (570 行 x 200000 列) があります。PLINK に詳しい方のために、GWAS 分析用の PED ファイルを作成しようとしています。Plink では、欠落している各文字をゼロでコーディングする必要があります。非欠損値は、「A」、「T」、「C」、または「G」です。

たとえば、データフレーム内のデータ構造は次のようになります。

           COL1     COL2 
     PT1    A        T      
     PT2    T        T     
     PT3    A        A
     PT4    A        T        
     PT5    0        0
     PT6    A        A 
     PT7    T        A
     PTn    T        T

ファイルを Plink で実行すると、エラーが発生します。R で自分のファイルを確認したところ、ゼロは「文字」型であることがわかりました。 Rの特定の列に2つの異なるデータ型(数値と文字)を含めることは可能ですか? 0 を数値型にして、文字を文字型のままにしてみましたが、うまくいきません。

4

1 に答える 1

2

Justin のアドバイスはおそらく Plink の問題を解決してくれると思いますが、質問に太字で答えたいと思います...

Rの特定の列に2つの異なるデータ型(数値と文字)を含めることは可能ですか?

そうではありませんが、この特定のシナリオでは、それが離散変数である場合、一種の「はい」です。R では、要素の基本型、他の言語では列挙型があります。

たとえば、これを試してください:

x = factor(c("0","A","C","G","T"),levels=c(0,"A","T","G","C"))
print(x)

[1] 0 A C G T
Levels: 0 A T G C

それらを整数 (デフォルトでは最初のレベルは 1) と文字に戻すことができます。

> as.integer(x)
[1] 1 2 5 4 3

> as.character(x)
[1] "0" "A" "C" "G" "T"

これで、read.table を使用してテーブルを読み取るときに、すべての文字タイプを引用符で囲んでも因数として読み取る必要があることを示すことができます。

mydata = read.table("yourData.tsv",stringAsFactors=T);
于 2012-10-02T22:13:11.537 に答える