前一篇文章提供了一种在R中迭代存储绘图的解决方案:参见... iteratively in R... 。我也有类似的问题,在阅读并实施了帖子提供的解决方案之后,我仍然无法解决我的问题。
上一篇文章提供了以下代码:
创建一个列表来保存绘图对象。
pltList <- list()
for( i in 2:15 ){获取数据,执行分析,ect.Create图名。pltName <- paste( 'a', i, sep = '' )使用名称作为索引将绘图存储在列表中。pltList[[ pltName ]] <- plot()
}
以下是我的代码实现:
a <- list.files("F:.../4hrs", pattern='.csv')
pltList <- list()
i=1
for (x in a) {
myfiles <- read.csv(a, header=TRUE, as.is=TRUE, nrows=2500)
h <- hist(data, plot=F)
# perform analysis, ect.
pltName <- paste('a', formatC(i, width=2, flag='0'), sep='')
pltList[[ pltName ]] <- plot(h)
i <- i+1
}pltName确实生成了一个名称列表,但是pltList的长度为零。
我不知道为什么pltList没有被分配地块。
我最终想要做的是创建一个pltList,其中包含多个情节。然后用par(mfrow=c(2,1))风格绘制这些情节,并导出为.pdf。
我应该提一下,上面的工作是为了
pltList[[ pltName ]] <- xyplot(h)但是,我无法用par(mfrow=c(2,1))的风格来绘制多个情节。
如有任何建议,敬请见谅。
发布于 2011-02-20 00:41:38
在您引用的原始问题和我对它的回答中,plot()被用作绘图函数的抽象占位符,该函数返回一个对象,而不是对R函数plot的文字调用。大多数返回图形对象的函数都基于“网格”包,例如格子包中的xyplot或ggplot2中的qplot。
对不起,我应该在我的答覆中清楚说明这一点,但问题的发问者早已察觉到这一点。
基本图形函数(如hist和plot )直接呈现到输出,并且不返回任何可用于稍后重新创建绘图的对象,这就是为什么最终得到长度为零的列表。
为了使用这种方法,您必须将hist函数的用法转换为返回对象的东西。使用ggplot2,您可以在循环中执行如下操作:
# Don't call your data variable 'data' or ggplot will confuse it with the
# `data` function and suffer an error.
h <- qplot(x = plot_data)
pltName <- paste('a', formatC(i, width=2, flag='0'), sep='')
pltList[[ pltName ]] <- h我已经编辑了对前一个问题的答案,以清楚地表明,在我的示例中使用plot()并不是对同名的R函数的实际调用。
发布于 2011-02-19 23:42:10
您的代码使用的是我没有的文件,所以我无法复制它,我也不完全确定您想要完成什么,但是我确实在代码中看到了一些问题,这些问题可能有助于修复它:
a <- list.files("F:.../4hrs", pattern='.csv')我不熟悉list.files,这是否正确地分配了a?.csv似乎是一个奇怪的模式。
pltList <- list()
i=1
for (x in a) {
myfiles <- read.csv(a, header=TRUE, as.is=TRUE, nrows=2500)在这里,我认为a是一个包含丝状结构的向量,对吗?您正在循环x的每个值的a,但我没有看到x返回任何地方的代码。同时,您也在这里读取文件名向量。这不应该是read.csv(x,...,或者更好的是循环for (i in 1:length(a))和索引a[i]。
h <- hist(data, plot=F)我在任何地方都没有看到data对象。h是否正确分配?
# perform analysis, ect.
pltName <- paste('a', formatC(i, width=2, flag='0'), sep='')
pltList[[ pltName ]] <- plot(h)
i <- i+1
}我喜欢做的就是手动运行这样一个循环,看看到底发生了什么。我认为在分配myfiles或h时存在一个问题
https://stackoverflow.com/questions/5053926
复制相似问题