如何在R中平滑数组?

问题描述 投票:1回答:3

我在R中有一个二维数组,它代表行和列的网格的值数据。看起来像这样:

     [,1] [,2] [,3] [,4]
[1,]    1    1    2    1
[2,]    1    5    6    3
[3,]    2    3    2    1
[4,]    1    1    1    1

我想“平滑”这些值。在这一概念验证点,我可以使用任何流行的平滑功能。我目前正在尝试使用smooth.spline函数:

smooth.spline(x, y = NULL, w = NULL, df, spar = NULL,
              cv = FALSE, all.knots = FALSE, nknots = NULL,
              keep.data = TRUE, df.offset = 0, penalty = 1,
              control.spar = list())

(通过(天真的)打电话)>

smoothed <- smooth.spline(myarray)

运行此文件时,出现此错误:

smooth.spline(a)中的错误:至少需要四个唯一的'x'值

我的数组在每个维度上都有四个或更多的唯一值,因此我认为我不知道如何正确格式化输入数据。有人可以给我一些有关这种事情的指示吗?类似smooth的函数的示例似乎可用于一维矢量,而我似乎无法推断到二维世界。我是R新手,所以请随时在这里纠正我对术语的误用!

我在R中有一个二维数组,它代表行和列的网格的值数据。看起来像这样:[,1] [,2] [,3] [,4] [1,] 1 1 2 1 [2,] 1 5 6 3 [3,] 2 3 2 ...

r spline
3个回答
8
投票

要在垂直轴或水平轴上进行一维平滑,请使用应用:

apply(myarray,1,smooth.spline)

8
投票

Smoothing


0
投票

检查fields程序包(https://github.com/NCAR/fields),尤其是非常有用的小插图:https://github.com/NCAR/fields/blob/master/fieldsVignette.pdf

© www.soinside.com 2019 - 2024. All rights reserved.