如何在R中创建多维函数数组?

时间:2016-07-06 14:49:15

标签: r data-structures

我有3个维度的函数,我想为第三个变量制作预先计算的线性插值的2D表。即,给定前两个变量的值,查找第三个变量的线性插值。如何构建一个多维(在本例中为2)数据结构,该数据结构将保存这些函数并可以编制索引。

例如,Id喜欢与结构进行交互:

a_func <-function (a, b, c) {...}

for(x in 1:n) {
    for(y in 1:m) {
        some_structure[x][y] <- approxfun(seq(0,q,by=0.01), sapply(seq(0,q,by=0.01), FUN=a_func, a=y, b=x))
    }
}

some_structure[_x][_y](z) #and then index it like this 

1 个答案:

答案 0 :(得分:1)

这不是最节省空间的方法,但这就是我在多个维度中保持奇怪变量的方法: 这将返回一个列表(不保留任何内容),其中包含您希望它保留的维度

  list.arr <- function(dimensions) {
    result <- list()
    length(result) <- prod(dimensions)
    dim(result) <- dimensions
    return(result)
  }

访问:lst <- list.arr(c(4,4)) lst[[x,y]] #you need to use double braces 并且您可以分配:lst[[x,y]] <- ANY_R_OBJECT

编辑: 这实际上只是一个带有维度属性的常规1-D列表,这意味着当您调用lst[[x]]时,它将只返回第x个变量而不是行。如果您需要行,则需要拨打lst[[x,]]

此外,您现在可以使用names(lst)dimnames(lst)col.names(lst)row.names(lst)为对象命名。