R语言 如何通过指定一系列列将一个大块分割成几个小块

2wnc66cl  于 2023-03-15  发布在  其他
关注(0)|答案(2)|浏览(154)

将一个大的tibble分割成几个小的tibble,通过指定一系列的列可以由tidyverse中的select操作,我不知道如何使用map*进行迭代并将它们存储在环境中,有什么好主意吗?

library(tidyverse)

# 
my_tibble <- tibble(
  col1 = rnorm(10),
  col2 = runif(10),
  col3 = letters[1:10],
  col4 = sample(1:100, 10, replace = TRUE),
  col5 = factor(rep(c("A", "B"), 5)),
  col6 = LETTERS[1:10]
)

## assume the combination
grA <- c("col1", "col2")
grB <- c("col3", "col4")
grC <- c("col15", "col6")
cols_list <- list(grA, grB, grC)

## I can get one tibble by select:
my_tibble %>% select(cols_list[[1]])

## but how to use select with map* (rather the baseR) and store it into different objects?
my_tibble %>% map(~select(cols_list))

非常感谢!

polkgigr

polkgigr1#

只需使用lapply

lapply(cols_list, \(i) my_tibble[i])
cu6pst1q

cu6pst1q2#

library(purrr)
library(dplyr)
map(cols_list, ~ select(my_tibble, all_of(.x)))

在底数R中,可以使用split.default

cols_list <- stack(lst(grA, grB, grC))
split.default(my_tibble, cols_list$ind[match(names(my_tibble), cols_list$values)])

相关问题