0

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

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

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

FunctionWantingObject(S[1,1])

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

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

4

1 回答 1

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"
于 2013-05-29T12:54:42.450 回答