0

我有一堆结果存储为双向量列表的列表(使用 optim 函数从 for 循环尝试的不同参数列表),因此当我键入 list 时,元素显示如下:

[[1]]
        r         k     sigma 
 96.66667 328.66667 396.33333 
.
.
.
.

[[291]]
    r     k sigma 
 97.0 329.8 397.7 
.
.
.
etc

我希望能够访问命名值“r”“k”和“sigma”的最小值和最大值。但是 RI 无法使用 $ 符号或使用引号来访问它们,因为 R 在 lsit 的列表中将每个名称视为唯一的,我尝试使用 unlist 但这将数据变成了 1000 长的向量,我已经尝试过 cbind 但都没有成功。

我将非常感谢任何人可以提供的任何帮助!

4

2 回答 2

4

如果列表的每个元素的大小相同(长度为 3 的向量),那么您可以执行以下操作:

do.call(rbind, mylist)

mylist您的输出对象列表在哪里。这将创建一个矩阵(或cbind代替rbind)。

仅抓住其中一个部分的另一种选择是:

sapply( mylist, `[`, "r" )

它将从每个向量中获取“r”元素,并尽可能将其简化为单个向量。将“r”替换为其他名称以获得其他部分。

于 2013-03-05T21:24:11.107 回答
3

您可以通过以下方式将其放入矩阵或数据框中:

mtx <- do.call(rbind, object)

您将能够通过以下位置访问单个元素:

listname[[291]]   # should return 
   r     k sigma 
97.0 329.8 397.7 
于 2013-03-05T21:21:21.860 回答