我有一堆结果存储为双向量列表的列表(使用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,但都没有用。
我非常感谢任何人提供的任何帮助!
答案 0 :(得分:4)
如果列表中的每个元素都是相同的大小(长度为3的向量),那么你可以这样做:
do.call(rbind, mylist)
其中mylist
是输出对象列表。这将创建一个矩阵(或使用cbind
代替rbind
)。
抓住其中一件的另一个选择是:
sapply( mylist, `[`, "r" )
将从每个向量中获取“r”元素并将其简化为单个向量(如果可以)。将“r”替换为其他名称以获得其他名称。
答案 1 :(得分:3)
您可以通过以下方式将其转换为矩阵或数据框:
mtx <- do.call(rbind, object)
您可以按位置访问单个元素:
listname[[291]] # should return
r k sigma
97.0 329.8 397.7