R: Ошибка !!: объект типа 'S4' не является подмножеством - PullRequest
0 голосов
/ 22 мая 2018

Я работаю с пакетом " rehh " R.

Я создаю объект chr21 класса haplohh из функции data2haplohh пакета.

Теперь, когда япопробуйте записать его в файл:

 write.table(chr21, file = "CHR21", append = FALSE, quote = TRUE,sep = "\t", eol="\n", na= "NA", dec=".", row.names=TRUE, col.names=TRUE)

Я получаю ошибку:

Ошибка в as.data.frame.default (x [[i]], необязательно= TRUE): невозможно принудительно привести структуру класса "(haplohh", package = "rehh") "к data.frame

Также, когда я пытаюсь напечатать первые 10 строк chr21,

head(chr21, n=10)

Я получаю эту ошибку:

Ошибка в x [seq_len (n)]: объект типа 'S4' не может быть поднабором

ОК, поэтомудобавляю вывод str (chr21) :

str (chr21)

Формальный класс 'haplohh' [пакет "rehh"] с 6 слотами

.. @ haplo: num [1:10, 1: 1010554] 0 2 2 2 0 2 0 2 0 2 ...

.. @ position: num [1: 1010554]9411410 9411645 9411785 9412503 9413228 ...

.. @ snp.name: chr [1: 1010554] "rs78200054" "rs71235074" "rs71235075" "rs71220884 "...

.. @ chr.name: chr" 21 "

.. @ nhap: int 10

.. @ nsnp: int 1010554

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

Заранее спасибо!

1 Ответ

0 голосов
/ 23 мая 2018
library(rehh)

#Copy example files in the current working directory.
make.example.files()

#Chreate some sampel data 
chr12<-data2haplohh(hap_file="bta12_hapguess_switch.out",map_file="map.inp",
                  min_maf=0.05,popsel=7,chr.name=12,recode.allele=TRUE)

# Look at the structure of the object (in your case it is called chr21)
str(chr12)
Formal class 'haplohh' [package "rehh"] with 6 slots
..@ haplo   : num [1:280, 1:1202] 2 2 1 2 2 2 1 2 2 2 ...
..@ position: num [1:1202] 79823 125974 175087 219152 256896 ...
..@ snp.name: chr [1:1202] "F1200140" "F1200150" "F1200170" "F1200180" ...
..@ chr.name: chr "12"
..@ nhap    : int 280
..@ nsnp    : int 1202

Вы можете извлечь различные компоненты из этого объекта:

# Extract data matrix from it
haplo.matrix <- chr12@haplo

# Extract position
pos <- chr12@position
head(pos)
#[1]  79823 125974 175087 219152 256896 316254

Если вам нужно вернуть данные в формат кадра данных, вы можете сделать следующее:

df <- data.frame(chr=chr12@chr.name, snp.name=chr12@snp.name, position=chr12@position, stringsAsFactors=FALSE)
df <- cbind(df, t( chr12@haplo))

Как только это будет сделано, вы можете использовать head () и другие обычные функции R.Однако, если вам нужно применить функции из пакета rehh, вы должны использовать оригинальный объект chr21

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