将R中的一维列表中的列值求和

时间:2018-10-20 22:28:35

标签: r list dataframe sum

我有以下列表,范围从1到1000。这里有29列,在每个列表中有一行(一维列表)

这是我的示例r代码。

data = sample(c(0,1), replace=TRUE, size=29000)
va1 = c(seq(1, 29000, by = 28))
DF21 <- mapply(function(a, b) DF[a:b, ], va, c(va[-1], nrow(DF)),
              SIMPLIFY = FALSE)
DF21

enter image description here

我使用do.call(rbind,lapply(DF2, colSums))来计算列总和。但是我收到一条错误消息,为“ FUN(X [[i]],...)中的错误:   “ x”必须是至少二维的数组”

如何在此处汇总每个列表中的列?

谢谢您的帮助。

1 个答案:

答案 0 :(得分:0)

您发布的代码段不会构成列表。在第三条语句中失败,因为'va'不存在。

以下代码将帮助您汇总列。它显示了如何将向量转换为矩阵,将矩阵列求和,将矩阵转换为列表,将其返回和矩阵。

data = sample(c(0,1), replace=TRUE, size=29000) # reusing your first line
mat <- matrix(data,nrow=1000,ncol=29) # constructing a 1000* by 29 matrix
colsum <- apply(mat,2,sum) # This sums the columns
l <- split(mat, 1:1000) # produce a list that looks like what you posted
mat2<-matrix(unlist(l),nrow=1000,ncol=29) # turn the list back to a matrix
colsum2 <- apply(mat,2,sum) # sum the columns again :-)