求和由lapply创建的矩阵中的行

时间:2016-07-18 15:07:27

标签: r lapply rowsum

我是R的新手,而我正试图弄清楚如何对以下输出中的行进行求和。

u <- c(1,2,3)
x <- lapply(u, replicate, rbinom(10,1,.5))

当我这样做时,x等于

[[1]]
      [,1]
 [1,]    0
 [2,]    0
 [3,]    1
 [4,]    1
 [5,]    0
 [6,]    1
 [7,]    1
 [8,]    1
 [9,]    1
[10,]    0

[[2]]
      [,1] [,2]
 [1,]    0    1
 [2,]    0    1
 [3,]    1    0
 [4,]    1    1
 [5,]    1    1
 [6,]    1    1
 [7,]    1    1
 [8,]    1    0
 [9,]    1    0
[10,]    0    0

[[3]]
      [,1] [,2] [,3]
 [1,]    1    0    0
 [2,]    1    1    1
 [3,]    1    0    1
 [4,]    1    0    1
 [5,]    0    0    1
 [6,]    0    0    1
 [7,]    0    1    0
 [8,]    1    1    1
 [9,]    0    1    1
[10,]    0    1    1

当我使用编码时

rowSums(x)

rowSums(x[2])

我收到此错误

Error in rowSums(x) : 'x' must be an array of at least two dimensions

如何对行进行求和?还有,有办法打破表格,以便我可以做个别分析。最好是一种非手动的方式,所以如果我有100多张桌子,我可以使用它

1 个答案:

答案 0 :(得分:2)

使用lapply()可以方便地执行列表中各个元素的循环。你可以试试这个:

lapply(x, rowSums)
#[[1]]
# [1] 0 1 0 1 1 0 1 1 1 0
#
#[[2]]
# [1] 2 1 2 2 1 2 1 1 0 1
# 
#[[3]]
# [1] 1 1 2 1 1 0 1 1 1 1

数据:

u <- c(1,2,3)
set.seed(123)
x <- lapply(u, replicate, rbinom(10,1,.5))