我有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
答案 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)
为对象命名。