【问题标题】:R How do I extract first row of each matrix within a list?R 如何提取列表中每个矩阵的第一行?
【发布时间】:2014-09-30 10:55:13
【问题描述】:

假设我有一个名为 mylist_1 的列表,其中包含 2 个矩阵:

mylist_1

$region_1           
users   50  20  30
revenue 10000   3500    4000

$red            
users   20  20  60
revenue 5000    4000    10000

如何将每个矩阵的第一行提取到自己的矩阵中?

即输出(这里的第一列是行名):

region_1    50  20  30
region_2    20  20  60

还是每个矩阵的第二行?

region_1    10000   3500    4000
region_2    5000    4000    10000

有没有办法引用列表/矩阵来做到这一点?

谢谢

【问题讨论】:

    标签: r list matrix element


    【解决方案1】:

    要提取每个矩阵的第一行,您可以使用:

    lapply(mylist1, head, 1)
    

    或者,如果你想rbind他们:

    do.call(rbind, lapply(lst, head, 1))
    

    或(仅)用于每个矩阵的第二行:

    lapply(lst, function(x) x[2,])
    

    【讨论】:

    • t(sapply(mylist_1, "[", 1, TRUE))t(sapply(mylist_1, "[", 2, TRUE))
    • @shadow,好点! lapply(lst, [, 2, TRUE) 也应该可以工作 :) (第二行)
    【解决方案2】:

    或者,

    lapply(mylist_1, `[`,1,)
    lapply(mylist_1, `[`,2,)
    

    【讨论】:

    • @shadow。我不完全确定原因。
    • 我正要问一个关于这种奇怪行为的问题。
    • @shadow,那太好了
    • 这不是奇怪的行为。 lapply 不是 sapply。他们每个人都有不同的目的。 lapply 将应用于列表。 sapply 仅适用于特定条件下的列表。都在帮助文件中/
    • do.call("rbind", lapply(mylist, "[", 2, ))
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-03-17
    • 2018-10-13
    • 2012-05-03
    • 2019-01-27
    • 2013-07-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多