1

我需要从另一个列表中的值中减去一个列表中的值,两个列表都有列表中的列表。应用该map2功能对我有用。我正在尝试应用于min (0,x)该函数(使最小数字= 0),但我不确定如何执行此操作。

A1 <- list (aa = list(a = data.frame(matrix(1:10,10,15)),
                      b = data.frame(matrix(1:10,10,15))),
            bb = list(a = data.frame(matrix(1:10,10,15)),
                      b = data.frame(matrix(1:10,10,15))))

A2 <- list (aa = list(a = data.frame(matrix(1:10,10,15)),
                      b = data.frame(matrix(1:10,10,15))),
            bb = list(a = data.frame(matrix(1:10,10,15)),
                      b = data.frame(matrix(1:10,10,15))))

library(purrr)
map2(A1, A2, ~ map2(.x, .y, `-`))

4

1 回答 1

2

我们可以用pmin

map2(A1, A2, ~ map2(.x, .y,  ~ pmax(.x - .y, 0, na.rm = TRUE)))

或使用条件逻辑

map2(A1, A2, ~ map2(.x, .y,  ~ {out <- .x - .y, 0
            case_when(out > 0 ~ out, TRUE ~ 0}))
于 2021-02-04T08:12:45.137 回答