访问列表中矩阵的元素

时间:2017-12-22 15:54:41

标签: r list matrix

我有一个功能:

LUD(A)

在矩阵A上应用LU分解算法。现在我必须返回下部和上部矩阵,U和L.为此,我使用了:

return(list(U=U,L=L))

我遇到的问题实际上是访问此列表的元素。现在我可以打电话给U;

U<-LUD(A)[1]

然而,这将U设置为长度为1的列表,而我显然希望将其作为矩阵。我读到我可以使用U [[1,1]]访问列表中的元素,但这会返回错误:

Error in U[[1, 2]] : incorrect number of subscripts

我也尝试过使用这个功能;

as.matrix(U) 

然而,这似乎不起作用。

1 个答案:

答案 0 :(得分:2)

使用双括号提取元素。如果列表本身具有类似矩阵的维度,则只使用两个索引,但事实并非如此。使用名称进行提取几乎总是更好,以便进行未来验证。

所以你想要

both <- LUD(A)
U <- both[["U"]]

但你可以使用

U <- both[[1]]

如果您的结果定义没有改变。您也可以使用

U <- both$U

请注意,$会进行部分名称匹配(例如,它会匹配U1,而不只是U,如果U恰好丢失了。这似乎可以节省打字,但从长远来看,依靠它是不好的:你现在可能有U1而不是U,但将来当你突然添加U时你将提取而不是U1