如何使用 r 中的 purrr 包执行此应用函数案例

how to do this apply function case using purrr package in r

如何使用 purrr 包执行以下操作?

set.seed(1)
test <- rnorm(100)
dim(test) <- c(2,5,10)
apply(X = test, MAR = c(1, 2), FUN = which.min)

您可以尝试 purrr 包中的 array_branch or array_tree,它将多维数组强制转换为展平列表或分层列表:

# array_tree
map(array_tree(test, c(1, 2)), ~ map_int(., which.min))
# [[1]]
# [1]  1  1  4  7 10
#
# [[2]]
# [1] 8 2 1 3 8

# array_branch
map_int(array_branch(test, margin = c(1, 2)), which.min)
# [1]  1  8  1  2  4  1  7  3 10  8

要获得与 apply 相同的结果:

x <- map_int(array_branch(test, margin = c(1, 2)), which.min)
y <- array(x, dim = dim(test)[1:2])
# > y
#      [,1] [,2] [,3] [,4] [,5]
# [1,]    1    1    4    7   10
# [2,]    8    2    1    3    8