按名称或列表/向量中的位置索引,哪个更快?

时间:2017-12-09 13:56:13

标签: r list vector indexing

我目前正在尝试优化物理模型计算的速度。这个模型的特殊性在于它使用数百的输入参数,所有输入参数都存储在一个大的命名向量中:

initialize = c("temperature"=100, "airpressure"=150, "friction"=0.46)

模型虽然迭代数百次,但需要访问参数,可能会更新它们等等:

compute(initialize['temperature'], initialize['airpressure'])
initialize['friction'] <- updateP(initialize['friction'])

这是逻辑。但是我想知道这样做是否真的有效。按名称进行索引后会发生什么,它快吗?改变这种逻辑的一些想法:

  • 将每个参数定义为环境中的自变量? (但是如何传递大量的函数作为函数的参数?
  • 有一个参数列表而不是一个命名向量?
  • 通过向量中的索引访问每个参数,如下所示:

    compute(initialize [1],initialize [2])

如果我使用这个最后的解决方案,当然我将失去代码的可读性(哪个参数实际上是初始化[1]?)。因此,一种方法可以是首先确定他们的立场:

temperature.pos <- 1
airpressure.pos <- 2
compute(initialize[temperature.pos], initialize[airpressure.pos])

当然,为什么我没有尝试这个并测试速度?好吧,在脚本中转换参数调用的每个位置需要花费数小时的时间,这就是我在做之前要求的原因。

也许还有一个更聪明的解决方案?

由于

0 个答案:

没有答案