【问题标题】:Loop of plots in RR中的地块循环
【发布时间】:2014-10-06 11:55:50
【问题描述】:

我有一个数组 NCT

我希望为每一行(即数组中的每个 N)绘制一个时间序列、acf 和 pacf

我可以在一个例子中做到这一点

par(mfrow=c(3,1))
x <- x_whole[N,C,(1:T)]
plot(x, t='l')
abline(h=mean(x), col='red')
acf(x, lag.max=T-10)
pacf(x, lag.max=T-10)

现在我希望为每个 N 创建一个循环

还有一些 N 是 0,如果是这种情况,我希望这些被忽略/跳过

我正在使用 R 软件

我最大的努力是

for(i in 1:N){
        if(i != 0){
             par(mfrow=c(3,1))
            plot(x_whole[i,1,(1:T)], t='l')
        abline(h=mean(x_whole[i,1,(1:T)]), col='red')
        acf(x_whole[i,1,(1:T)], lag.max=190)
        pacf(x_whole[i,1,(1:T)], lag.max=190)

    }
    else{
        return 0 
        }
} 

数据看起来像

[,,1]
3.45    4    5    6    7
0       2    3    6    6
2.34    4    5    6    5

[,,2] 
4.56    4    5    6    7
4.43    2    3    6    6
0       4    5    6    5 

等等。

我希望有一个 3x1 的情节,其中 [1,1,(1:T)] , [2,1,(1:T)] [3,1,(1:T)] 作为输出

另外,请注意第 3、4、5 列中的数据已排序

【问题讨论】:

  • 你能提供一个你的数组是什么样子的例子吗(例如使用dput)?你之前的努力有什么问题?相反,您期望什么输出?我也很难理解你所说的“一些 N 是 0”是什么意思。
  • 正如 SimonG 所说,您能否提供一小部分数据集(dput)或类似于您的假数据集?首先,您可以通过将 a=x_whole[i,1,(1:T)] 放在循环的开头并在其余部分替换它来简化您的代码。其次,如果您从 1:N 开始,N 怎么可能为零?也许您的意思是 a 中的 0(其中 all() 函数很方便)?第三,跳过循环检查“下一步”的一部分。

标签: arrays r loops if-statement plot


【解决方案1】:

试试

for(i in 1:length(N)){
  if(i==0)
    {return 0} else
      {par(mfrow=c(3,1))
        plot(x_whole[i,1,(1:T)], t='l')
    abline(h=mean(x_whole[i,1,(1:T)]), col='red')
    acf(x_whole[i,1,(1:T)], lag.max=190)
    pacf(x_whole[i,1,(1:T)], lag.max=190)}}

如果没有您的数据样本,我将无能为力。您能否以data&lt;-c(...)data&lt;-matrix(...,ncol=...,nrow=...) 的格式将其作为向量/矩阵提供,谢谢:)

【讨论】:

    猜你喜欢
    • 2016-02-15
    • 2021-11-13
    • 1970-01-01
    • 2016-03-18
    • 1970-01-01
    • 2022-11-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多