我想将对象存储在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
导致后面的函数对传递的参数不满意。
答案 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"