我想知道是否有人可以协助下面的代码。我有一个巨大的数据集(> 1000个主题),我试图单独进行可视化。
我很幸运能找到Tony Cookson撰写的R-bloggers代码,我已经修改了该代码供我使用。代码工作正常但生成的pdfs已损坏 - 基本上它们拒绝打开。我有一种感觉到某处有虫子,但我还没知道在哪里。任何帮助将受到高度赞赏。
library(lattice)
names = LETTERS[1:3]
for(i in 1:3){
mypath <- file.path("myFilepath", "folder containing 'Plots' subfolder ",
"Plots",paste("myplot_", names[i], ".pdf", sep = ""))
pdf(file=mypath)
mytitle = paste("Theoph Plots", names[i])
xyplot(conc ~ Time | Subject, group = Subject, data = Theoph, type = "l",
layout = c(2, 2), main = mytitle)
dev.off()
}
要使代码具有可重现性,您需要替换myFilepath,包含&#39; Plots&#39;子文件夹和&#34; Plots&#34;包含可在您的计算机上找到的实际文件夹的名称。有关详细信息,请参阅R-bloggers上的原文。我很乐意澄清任何看似含糊不清的内容。
由于
编辑:
library(lattice)
names = LETTERS[1:3]
for(i in 1:3){
mypath <- file.path("myFilepath", "folder containing 'Plots' subfolder ",
"Plots",paste("myplot_", names[i], ".pdf", sep = ""))
pdf(file=mypath)
mytitle = paste("Theoph Plots", names[i])
print(xyplot(conc ~ Time | Subject, group = Subject, data = Theoph, type = "l",
layout = c(2, 2), main = mytitle))
dev.off()
}
我设法使用打印功能找到了一个临时解决方案(上图)。但是,我目前正在以相同的pdf获得所有12个主题。我真正想要的是4个主题(2乘2矩阵)在单独的pdfs上,所以总共3个pdf。有谁知道怎么做?
答案 0 :(得分:1)
如果您希望在每个页面上绘制Subject
的子集,那么您必须为每次迭代对数据进行子集化,然后进行绘图。
要在每个页面上获取4个主题,您可以使用以下索引构建器作为子集的基础:
(i - 1) * 4 + 1:4
Theoph
数据集的技巧是主题&#34;数字&#34;实际上是有序因素。因此,您必须将上述内容转换为一个因子,或者作为快捷方式转换为字符向量。
for(i in 1:3){
## Changed mypath to make it reproducible
mypath <- file.path(tempdir(), paste("myplot_", names[i], ".pdf", sep = ""))
pdf(file=mypath)
mytitle = paste("Theoph Plots", names[i])
myIndex <- as.character((i - 1) * 4 + 1:4) # index builder from above
print(xyplot(conc ~ Time | Subject,
data = Theoph[Theoph$Subject %in% myIndex, ],
type = "l", layout = c(2, 2), main = mytitle))
dev.off()
}
受试者的顺序有点棘手,因为该变量是有序因子,如上所述。为了保持排序,您可以对该因子的级别进行分组:
myIndex <- levels(Theoph$Subject)[(i - 1) * 4 + 1:4]
构建索引的最佳方式取决于您的实际数据。