tibbles inside tibbles 到列表

Tibbles inside tibbles to lists

我有一个函数可以转换存储在列表中的小标题存储在小标题中。这是因为 do 函数在使用时会这样做。 然后我应用一个函数来过滤掉某些观察结果。

但是,这个函数 returns 是一个 tibble 而不是一个列表,所以它作为一个 tibble 存储在 tibble 而不是一个列表中。

library(dplyr)
data(iris)

# Store observations in a list for this example
iris <- iris %>%
  group_by(Species) %>% 
  do(obs = list(.$Sepal.Length))

iris$n <- 1:3

# The function that filters data
filter_fun <- function(x, n){
  if(any(n > 2)){x <- filter(as_tibble(as.data.frame(x)), x > 2)
  } else {x <- x}
  return(x)}

# This makes two lists and a tibble inside a tibble instead of three lists
x <- iris %>%
  group_by(Species) %>% 
  do(filtered = filter_fun(x = .$obs, n = .$n))
当应用于 iris 数据时,

x 在第二列显示三个元素,<list [1]><list [1]><tibble [0 x 1]>。所有这些都应该是列表。如何将 tibble 中的 tibble 更改为包含 tibble 的列表?

如果我们需要list,那么将tibble的输出包装在函数

中的list
filter_fun <- function(x, n){
     if(any(n > 2)){
         filter(as_tibble(as.data.frame(x)), x > 2 ) %>% list(.)
     } else x
   }