【问题标题】:Accessing elements of a matrix within a list访问列表中矩阵的元素
【发布时间】:2017-12-22 15:54:40
【问题描述】:

我有一个函数:

LUD(A)

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

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

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

U<-LUD(A)[1]

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

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

我也尝试过使用该功能;

as.matrix(U) 

但是这似乎不起作用。

【问题讨论】:

    标签: r list matrix


    【解决方案1】:

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

    所以你想要

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

    但你可以使用

    U <- both[[1]]
    

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

    U <- both$U
    

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-05
      相关资源
      最近更新 更多