Чтение сжатых файлов с использованием read.table () - PullRequest
1 голос
/ 01 июня 2019

При попытке перезагрузить таблицы перекрестных ссылок и hprd из UCSC Table Browser :

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).

Вероятно, я должен добавить, что этот точный код работал несколько недель назад.Я недавно обновил свои ОС (Mac Mojave), R (3.6.0) и RStudio (Версия 1.2.1335) на прошлой неделе, чтобы установить несколько пакетов, которые не были совместимы с моими более старыми версиями.Я чувствую, что это может быть как-то связано с этим.

Любая помощь будет принята с благодарностью!Заранее спасибо!

Ответы [ 2 ]

0 голосов
/ 06 июня 2019

Я предполагаю, что, используя 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")
0 голосов
/ 04 июня 2019

Кажется, что параметр 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).

Извините, я не могу быть более точным с минимальным рабочим примером этого, но надеюсь, что это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...