对象的二维数据结构

时间:2013-05-29 12:43:08

标签: arrays r list object data-structures

我想将对象存储在R中的二维数据结构中。我已经搜索并尝试了几种解决方案,但它们都没有做我想要的。这就是我的想法:

S = SomeTwoDimensionalStructure(dim=c(2,4))

S[1,1] = LoadDataObject("File1")
s[1,2] = LoadDataObject("File2")
# etc

FunctionWantingObject(S[1,1])

This解决方案非常接近,但需要访问S[[1,1]]而不是S[1,1]

将对象添加到列表然后使用dim导致后面的函数对传递的参数不满意。

1 个答案:

答案 0 :(得分:3)

如果您愿意为二维结构提供一个新类,那么您可以为它定义一个特殊的[方法,它可以满足您的需求。

## Make sample data, a matrix of lists, of class "listmatrix"
set.seed(44)
m  <- matrix(lapply(sample(9), function(X) sample(letters, size=X)), ncol=3)
class(m) <- "listmatrix"

## Define a new `[` method for "listmatrix" objects
`[.listmatrix` <- function(x,i,j,...) `[[`(x,i,j,...)

## Check that it works
m[1,2]
# [1] "m" "f" "h" "y" "r" "x" "q" "k" "n"