首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何计算矩阵列表中特定行的总和?

如何计算矩阵列表中特定行的总和?
EN

Stack Overflow用户
提问于 2018-05-29 06:55:30
回答 2查看 50关注 0票数 1

我将数据存储在矩阵中,矩阵存储在一个列表中,我想要每个矩阵中特定行的总和。

一些示例数据

A1<-matrix(0:9, nrow=5, ncol=2)
A2<-matrix(10:19, nrow=5, ncol = 2)
A3<-matrix(20:29, nrow=5, ncol = 2)
Mylist<-list(A1, A2, A3)

我可以用以下命令得到每个矩阵中所有行的总和

lapply(Mylist, function(x) apply(x, 1, sum) )

但我只想要特定行的总和,可能是第1行,也可能是第4行,这取决于我想要查看的内容。我知道我可以从我用上面的代码生成的结果中读出它,但我想要一个更干净的解决方案,只给我结果。谢谢

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-05-29 07:02:45

您可以使用purrr:map()

如果您知道输出类型(在本例中,似乎都是整数),则可以更具体,如map_int()。对于map(),你会得到一个列表,对于特定的map版本,比如map_int(),你会得到一个向量。

library(tidyverse)

ix <- 3 # let's say we want the sum of the third row

map_int(Mylist, ~sum(.x[ix, ]))
[1] 9 29 49

如果您关心的行索引在每个矩阵中发生变化,则可以改用map2(),它接受相同长度的两个输入:

ixs <- c(1, 2, 3)

map2_int(Mylist, ixs, ~sum(.x[.y, ]))
[1]  5 27 49

或者,如果您需要使用基数R,您可以只获取所需的sum()索引(这里是ix),您不需要在lapply()中使用apply()

lapply(Mylist, function(x) sum(x[ix, ]))

[[1]]
[1] 9

[[2]]
[1] 29

[[3]]
[1] 49
票数 2
EN

Stack Overflow用户

发布于 2018-05-29 09:12:39

one.row.sum <- function(df, row.num) lapply(Mylist, function(df) sum(df[row.num, ]))

one.row.sum(Mylist, 1)
[[1]]
[1] 5

[[2]]
[1] 25

[[3]]
[1] 45
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50574271

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档