如何使用 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
如何使用 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