r - R 关于插槽和数据类的混淆
问题描述
我使用一些具有特定数据类的包进行了一些预处理,现在我很困惑尝试像往常一样访问一些数据。
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)
解决方案
推荐阅读
- java - 转换后的 .exe 文件中文件的路径是什么?
- nginx - Nginx 作为 IIS 上的反向代理
- wordpress - Wordpress 主题安装问题
- c++ - c ++ int数组上的迭代异常
- c# - 如何在 Unity 中向(向后方向)的移动对象添加力
- python - 删除数据文件中的一些分号
- python - 从批处理文件运行 python 脚本时出现 ModuleNotFoundError
- visual-studio - 如何在 Visual Studio 中安装 Iron-Python?
- json - 如何Observable映射具有不同属性名称的嵌套json对象 - Angular
- mongodb - findByIdAndUpdate 不更新任何内容