我问了两年前发布的类似帖子的一个问题,没有完整答案(subset of prcomp object in R)。附:很抱歉评论答案..
基本上,我的问题是一样的。我使用prcomp生成了一个PCA表,其中包含10000多个基因和1700多个细胞,由7个时间点组成。在一个文件中绘制所有这些内容使得很难看到。
我想分别使用相同的PCA结果表绘制每个时间点(即不重新运行prcomp)。
感谢Dean给我发帖的提示。想想一种描述我的数据集而不实际加载它的方法,我会相信我一周。我也试过了
dput(droplevels(head(object,2)))
选项,但由于我有这么大的数据集,所以信息太多了。简而言之,它是一个庞大的单细胞数据集矩阵,人们可以在Seurat(https://satijalab.org/seurat/pbmc3k_tutorial_1_4.html)这样的包装上常见。编辑:我在这里发布了我的矩阵子集的截图()。
对不起,我不知道如何重新创建或甚至导出文本格式..但这是我能提供的:我的TPM矩阵有16541行(定义基因)和1798列(定义单元格)。
在其中,我根据时间点“重新标记”了我的列,使用以下代码:
D0<-c(colnames(TPM[,grep("20180419-24837-1-*", colnames(TPM))])) #D0: 286 cells
D7<-c(colnames(TPM[,grep("20180419-24837-2-*", colnames(TPM))])) #D7: 237 cells
D10<-c(colnames(TPM[,grep("20180419-24947-5-*", colnames(TPM))])) #D10: 304 cells
......我继续为每个时间点贴上标签。
每个时间点也都有特定的颜色。
rc<-rep("white", ncol(TPM))
rc<-[,grep("20180419-24837-1-*", colnames(TPM))]= "magenta"
......我继续为每个时间点赋予颜色。
我使用以下代码执行了PCA:
pcaRes<-prcomp(t(log(TPM+1)), center= TRUE, scale. = TRUE)
然后我继续使用以下方法绘制PCA图:
plot(pcaRes$x[,1], pcaRes$x[,2], xlab="PC1", ylab="PC2",
cex=1.0, col= rc, pch=16, main="")
然后,当我想用D0绘制PCA图时,使用相同的PCA输出(pcaRes)..这就是我被困住的地方。
附:如果其他人有更简单的方法来建议如何从我的大矩阵输入示例数据,我欢迎任何帮助。非常感谢!对不起,我是生物信息学的新手。
Stack Exchange for Bioinformatics是您需要去问问题或了解您需要处理专业领域所需的包裹和功能的地方。 Stack Exchange for Bioinformatics与Stackoverflow相关联,因此您只需要加入,您将获得相同的登录信息。
类S3,S4和基础。
这是一个非常基本的视图中的C类。认为一个类作为父类你继承了他们所有的技能或能力,因此你能够比其他人更好地完成某些任务,有些情况下,你将无法完成任务。
在R和所有编程中,为了节省重新发明轮子,创建了父类,以便普通人不必重复编写函数来执行简单的操作,如plot()图形。这个东西是隐藏的,要访问它,你从父级继承。孩子从父母那里读取特征,然后它执行任务或给你一个神秘的错误信息。
基础和S3课程很好地协同工作,他们就像R世界的工人阶级一样。 S4是专门针对特定研究领域而设计的专业课程,能够提供其所在行业所需的特定功能。这意味着您只能使用具有Class S4功能的某些Base和S3功能,大多数只是不兼容。所以你没有做错,plot()和ggplot()只是有错误的父级来处理你的数据集。
典型基数和S3类数据帧:类似盒子的结构。沿着左侧是所有的列名称,漂亮而整齐地堆叠在一起。
Seurat S4类数据帧:树状结构,格式化为由特定功能读取。
希望有所帮助,祝你事业顺利。干杯康拉德
如果这有帮助,请点击向上箭头。 :)
感谢@ConradThiele的建议,我会查看该网站。
我与该研究所周围的其他生物信息学进行了聊天。我的查询与作为S4类的对象没什么关系,因为我在包之外执行prcomp。我已经从对象中提取了我的矩阵,然后在它上面运行了prcomp。
解决方案很简单:使用完整数据集运行prcomp,将prcomp输出转换为数据帧,输入其他列以输入“timepoint”等其他详细信息,仅使用感兴趣的“timepoint”/“variable”创建新数据帧prcomp结果,制作多个子数据帧,然后使用“plot”或您使用的任何函数绘制这些子数据帧。
这不是我的解决方案,但是从生物信息学中,我去了我的学院寻求帮助。希望这有助于他人!感谢你的宝贵时间。
附:如果我有时间,我会尽快发布我建议的代码副本。