R путаница по поводу слотов и классов данных - PullRequest
0 голосов
/ 19 июня 2019

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

    str(metadata)
'data.frame':   51 obs. of  11 variables:
Formal class 'sample_data' [package "phyloseq"] with 4 slots
  ..@ .Data    :List of 11
  .. ..$ : Factor w/ 51 levels "1_S51","10_S60",..: 2 3 4 5 6 7 8 9 10 1 ...
  .. ..$ : int  10 11 13 14 15 16 17 18 19 1 ...
  .. ..$ : Factor w/ 13 levels "1","10","11",..: 2 3 1 5 6 7 8 9 10 1 ...
  .. ..$ : Factor w/ 2 levels "Control","Stool": 2 2 2 2 2 2 2 2 2 2 ...
  .. ..$ : Factor w/ 3 levels "Control","ZT14",..: 3 3 2 2 2 2 2 2 2 3 ...
  .. ..$ : Factor w/ 3 levels "1","2","Control": 1 1 2 2 2 2 2 2 2 1 ...
  .. ..$ : Factor w/ 3 levels "AdLib","Control",..: 3 3 3 3 3 3 3 3 3 3 ...
  .. ..$ : Factor w/ 3 levels "Control","RC",..: 2 3 2 2 3 3 2 2 3 2 ...
  .. ..$ : Factor w/ 3 levels "Control","Female",..: 2 3 3 2 3 2 3 2 3 3 ...
  .. ..$ : Factor w/ 5 levels "Control","RC_AdLib",..: 3 5 3 3 5 5 3 3 5 3 ...
  .. ..$ : Factor w/ 5 levels "Control","RC_1",..: 2 4 3 3 5 5 3 3 5 2 ...
  ..@ names    : chr  "SampleID" "SampleNumber" "MouseTime" "SampleType" ...
  ..@ row.names: chr  "10_S60" "11_S61" "13_S62" "14_S63" ...
  ..@ .S3Class : chr "data.frame"

Например, раньше мои метаданные представляли собой «нормальный» фрейм данных и могли объединять его с другими фреймами данных. Теперь я не уверен, как это сделать.

dat.czm.annot.otu<-merge(dat.czm.otu,metadata,by.x="row.names",by.y="SampleID")

Error in validObject(.Object) : 

недопустимый объект класса «sample_data»: Образцы данных должны иметь ненулевые измерения.

Я пробовал этот обходной путь, но мне было интересно, есть ли другой способ, которым я «должен» это делать. Спасибо

    metadata.2<-as.data.frame(slot(metadata,".Data"))
colnames(metadata.2)<-colnames(metadata)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...