1

我在 R 中有一个大数据框(570 行乘 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 的给定列中是否可以有两种不同的数据类型(数字和字符)? 我尝试将 0 设为数字类型并将字母保留为字符类型,但它不起作用。

4

1 回答 1

2

我认为贾斯汀的建议可能会解决您对 Plink 的问题,但想以粗体字回答您的问题......

在 R 的给定列中是否可以有两种不同的数据类型(数字和字符)?

不是真的,但在这种特殊情况下,当它是一个离散变量时,是的。在 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 回答