小标题内的小标题

时间:2019-05-17 12:55:05

标签: r list dplyr tibble

我有一个函数可以转换存储在小表内的列表中的小表。这是因为do函数在使用时会执行此操作。 然后,我将应用一个过滤掉某些观察结果的函数。

但是,此函数返回的是小标题而不是列表,因此它以小标题而不是列表的形式存储在小标题中。

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))

x在应用于<list [1]>数据时在第二列<list [1]><tibble [0 x 1]>iris中显示三个元素。所有这些都应该是列表。如何将小标题内的小标题更改为包含小标题的列表?

1 个答案:

答案 0 :(得分:1)

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

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