使用read.table()读取压缩文件

时间:2019-06-01 03:09:57

标签: r rstudio bioinformatics

尝试从UCSC Table Browser重新加载交叉引用表和hprd表时出现错误:

kgxref=read.table("kgXref.txt.gz",sep="\t",as.is=T,comment="",header=T,quote="")
hprd=read.table("humanHprdP2P.txt.gz",as.is=T,header=T,comment="")

我不断收到错误消息:

Error in read.table("kgXref.txt.gz", sep = "\t", as.is = T, comment = "", : invalid numeric 'as.is' expression

我检查了我的文件名是否正确键入,工作目录设置为正确的文件夹,并且尝试加载带有和不带有“ .gz”扩展名的文件(我同时压缩和wd中的未压缩版本。

我可能还应该补充说,几周前,我已经使用了这个确切的代码。我最近上周更新了我的OS(Mac Mojave),R(3.6.0)和RStudio(1.2.1335版),以便安装一些与我的旧版本不兼容的软件包。我觉得这可能与它有关。

任何帮助将不胜感激!预先感谢!

2 个答案:

答案 0 :(得分:0)

根据as.is文档,看来read.table参数是向量

  

read.table的默认行为是将字符变量(未转换为逻辑,数字或复数)转换为因子。变量as.is控制colClasses否则未指定的列的转换。它的值可以是逻辑向量(必要时可以循环使用值),也可以是数字或字符索引的向量,用于指定不应将哪些列转换为因子。   注意:要禁止所有转换,包括数字列的转换,请设置colClasses =“ character”。   请注意,as.is是按列(不是按变量)指定的,因此包括行名的列(如果有)和要跳过的任何列。

因此,为了检查这是否是问题,我将完全删除该参数:

hprd=read.table("humanHprdP2P.txt.gz",header=T,comment="")

然后,如果可行,请指定一个带有列索引的向量,该列索引应“按原样”或布尔值保存,例如c(2,3)

很抱歉,我无法通过一个简单的示例来更精确地介绍它,但希望对您有所帮助。

答案 1 :(得分:0)

我猜想,通过使用 as.is = TRUE ,我们试图避免将列变成因子类,并希望将它们保留为字符类。另外,这些文件没有标题。

以下是选项:

# keep strings as character (avoid factors)
kgxref <- read.table("kgXref.txt.gz", stringsAsFactors = FALSE, sep = "\t")

使用 data.table :: fread

# use fread instead, with default settings it reads the file as expected
kgxref <- fread("kgXref.txt.gz")

甚至更好,使用 fread ,我们可以直接从链接获取表:

# fread with a link to zipped data file from UCSC
kgxref <- fread("http://hgdownload.cse.ucsc.edu/goldenpath/hg19/database/kgXref.txt.gz")
humanHprdP2P <- fread("http://hgdownload.cse.ucsc.edu/goldenpath/hg19/database/humanHprdP2P.txt.gz")