我有一个函数可以转换存储在小表内的列表中的小表。这是因为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
中显示三个元素。所有这些都应该是列表。如何将小标题内的小标题更改为包含小标题的列表?
答案 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
}