我有一个功能:
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)
然而,这似乎不起作用。
答案 0 :(得分:2)
使用双括号提取元素。如果列表本身具有类似矩阵的维度,则只使用两个索引,但事实并非如此。使用名称进行提取几乎总是更好,以便进行未来验证。
所以你想要
both <- LUD(A)
U <- both[["U"]]
但你可以使用
U <- both[[1]]
如果您的结果定义没有改变。您也可以使用
U <- both$U
请注意,$
会进行部分名称匹配(例如,它会匹配U1
,而不只是U
,如果U
恰好丢失了。这似乎可以节省打字,但从长远来看,依靠它是不好的:你现在可能有U1
而不是U
,但将来当你突然添加U
时你将提取而不是U1
。