【问题标题】:How do I take a printed set and make it into 1 list?如何获取打印集并将其放入 1 个列表?
【发布时间】:2018-07-29 06:15:46
【问题描述】:

我有一个循环,我在其中对栅格进行下采样,然后找到这些栅格的标准偏差。我的代码是

    i=0
    while(i<10)
    {


      # Get the Raster + Noise raster
      NewRaster=NoisyRaster(OriginalRaster,NoiseMatrix)

    DownSampledRaster=DownSampleRaster(NewRaster,CellSize,MEAN)

     TheMatrix=as.matrix(DownSampledRaster)
    StandardDev=sd(TheMatrix, na.rm=T)
     print(StandardDev)



    i=i+1 

   }

问题是,当它打印标准偏差时,它看起来像这样:

     [1] number
     [2] number etc.

我需要这样做超过 100 次迭代,并且我需要能够找到这些数字的均值和标准差。我怎样才能将这些数字放入向量中以便我可以轻松地做到这一点?

【问题讨论】:

  • purrr::map 和相关函数对于这类事情非常有用,我强烈建议您了解如何使用它们。将您的栅格放入列表中,例如r。然后你可以做output &lt;- map(r, function(x) cellStats(x, "sd"))。这将为您提供输入栅格的标准偏差列表。如果你希望结果是一个向量,你可以unlist()这个。
  • 谢谢!我必须检查一下 - 我对 R 非常陌生,但我现在会查找它们

标签: r list loops while-loop


【解决方案1】:

我尝试重写你的代码,这是我想出的:

StandardDev = vector(mode = "numeric")
for(i in 1:10) {


  # Get the Raster + Noise raster
  NewRaster=NoisyRaster(OriginalRaster,NoiseMatrix)

  DownSampledRaster=DownSampleRaster(NewRaster,CellSize,MEAN)

  TheMatrix=as.matrix(DownSampledRaster)
  StandardDev[i] = sd(TheMatrix, na.rm=T)

}

【讨论】:

  • 我相信它应该,只要你用[i]索引向量
猜你喜欢
  • 1970-01-01
  • 2020-05-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-19
  • 2018-10-24
  • 2021-06-26
相关资源
最近更新 更多