dput(dat)
list(structure(c(0, 0, -1, -2, -1, -2, -1, -2, 0, 2, 99, 0, -1,
-2, -1, -2), .Dim = c(2L, 8L), .Dimnames = list(c("type1", "type2"
), c("A", "B", "C", "D", "E", "F",
"G", "H"))), structure(c(1, 2, 1, 2, 1, 2, 1, 2,
1, 2, 99, 0, 1, 3, 1, 3), .Dim = c(2L, 8L), .Dimnames = list(
c("type1", "type2"), c("A", "B", "C",
"D", "E", "F", "G", "H"))))
>dat
[[1]]
A B C D E F G H
type1 0 -1 -1 -1 0 99 -1 -1
type2 0 -2 -2 -2 2 0 -2 -2
[[2]]
A B C D E F G H
type1 1 1 1 1 1 99 1 1
type2 2 2 2 2 2 0 3 3
假设我上面列出了2个项目。每个项目包含2x8 data.frame
。我想
1)总结2 type1
中每列的data.frames
值(但将99s视为0)
2)如果type1
值为0,则保留其对应的type2
值。如果type1
值不等于0,则将其type2
值设置为0.
3)总结type2
data.frames
值
4)计算每列的type1
值= 0并总结(这是type1_0行)
结果应如下所示
A B C D E F G H
type1 1 0 0 0 1 0 0 0
type2 0 0 0 0 2 0 0 0
type1_0 1 0 0 0 1 0 0 0
答案 0 :(得分:1)
我们遍历list
(lapply(dat,..
),将第二行('type2')更改为0,表示非0的所有'type1',replace
99为0 ,并将相应的元素与Reduce
相加。我们提取'type1'行,即第一行lapply
,rbind
,转换为逻辑矩阵(!
- 为0返回TRUE,其他值返回FALSE),得到{{1 }和colSums
与'res1'。
rbind