【问题标题】:R. Taking values from interpolationR. 从插值中取值
【发布时间】:2013-11-07 08:06:23
【问题描述】:

我想一次从插值中获取多个值。 例如,从我的数据文件('int.txt')中,我有每个“conc1”对应于每个“depth1”(例如,1.1 m、2.1 m、3.1 m、4.1 m、5.1 m、6.1 m)。

在这里,在插入我的浓度数据后,我想在 1.2、2.2、3.2、4.2、5.2 m 的“深度”处取“浓度” 在下面的 cmets 之后(我正在编辑我的问题),我编写了这样的代码,

f = approxfun(depth1, conc1, rule=1,method='linear', xout=seq(1.2,5.2,1.0))

i<-approx(depth1, conc1, rule=1,method='linear', xout=seq(1.2,5.2,1.0))

效果很好。在这里,我还有两个问题。 1. 那么,如何用 i 中的数据创建两列?我可以将这两列添加到我的数据中吗?在这种情况下,我将在新列的最后一行没有任何价值。 2. 我还有一个 x, y 向量 (y= conc2, x=depth2)。我在每个“depth2”处都有每个“conc2”,而“depth2”没有规则间隔,所以就像1.3、2.7、3.2......这里,在上面插值之后,我想提取所有对应的“conc1”值“深度2”。 请让我知道如何做这些事情。非常感谢您的帮助:)

【问题讨论】:

  • 您使用哪种方法进行插值?多项式,游戏等......
  • 您好,欢迎来到 stackoverflow!如果您提供minimal, reproducible data set,您更有可能收到有用的答案。此外,向我们展示您尝试的解决方案的代码、它们为什么不起作用以及预期的结果。谢谢!
  • 感谢您的 cmets。我用一些数据修改了我的问题。在这里,我使用了线性插值。提前感谢您的 cmets/回答我的新问题 :)

标签: r interpolation


【解决方案1】:

approxfun() 生成一个在给定 x 和 y 向量之间进行插值的函数。您可以在向量上调用该函数以一次获取许多近似值。您可以进行一些自定义(例如简单的插值方法以及在数据范围之外执行的操作),但这应该可以帮助您开始,直到您指定需要更复杂的东西。

?approxfun
f = approxfun(x=c(1.1, 2.1, 3.1, 4.1, 5.1),y=c(1, 3, 5, 2, 4),rule=1,method='constant')
plot(y=f(seq(1.1,5.1,.1)),x=seq(1.1,5.1,.1))
f = approxfun(x=c(1.1, 2.1, 3.1, 4.1, 5.1),y=c(1, 3, 5, 2, 4),rule=1,method='linear')
plot(y=f(seq(1.1,5.1,.1)),x=seq(1.1,5.1,.1))

【讨论】:

  • 非常感谢!!它有很大帮助。我在您的 cmets 之后添加了一些数据并编写了代码。你会回答我上面的下一个问题吗?谢谢:)
  • 对于对象创建,您可以生成向量(如在 y=f(seq(1.1,5.1,.1)) 中)并将它们 rbind 或 cbind 组合在一起,或者将您的输入值和将该函数应用于矩阵或其他任何东西。 approxfun() 的好处是你可以将它返回的函数应用到你喜欢的任何东西上。如果我正确理解你的最后一个问题,你想看看你的第一个深度~浓度图的插值结果与你的第二个深度~浓度图的数据是什么样的。只需在第二个输入的第一个映射上调用 approxfun()。
  • 感谢您的 cmets。正如你提到的,我使用 cbind 解决了第一部分。但是,我仍然无法解决最后一部分。在“conc”插值后,我想提取与“depth2”对应的“conc”值。我尝试了使用 depth1 设置深度的 approxfun(),但它没有用。你能告诉我解决这个问题吗?
  • 我不认为我完全理解你的问题。我认为您有两个数据集,每个数据集都有深度和集中度。您可以通过将参数或顺序更改为 approxfun 来找到这些数据集中的任何地图。如果您希望将第 2 组的深度~浓度映射的倒数应用于第 1 组,请交换参数顺序并在其他数据集上调用结果函数。如果这还不够,您能否编写一个最小的工作示例,在您缺少的部分中有一个空白?
  • 我认为我不必再使用一个 approxfun。基本上,我在插值后插值了“conc1”。然后,我需要从对应于“depth2”的插值“conc1”中提取值。插值的“conc1”是无限数,但“depth2”有几行。所以,我需要找到深度 2 的所有值,并从插值的“conc1”中提取相应的 conc。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-08-25
  • 2020-07-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多