在R中检查列是否嵌套数据框架的最佳方法是什么?



我想在所有列上应用一个函数,这些列是嵌套的数据框架或标题。

检查列是否是嵌套数据框架(例如与mutate_ifacross一起使用)的最佳方法是什么?下面是一个嵌套数据框架示例,它应该与。

一起使用。
(mpg %>% group_by(manufacturer) %>% nest())$manufacturer
(mpg %>% group_by(manufacturer) %>% nest())$data

我想到的一个非常粗糙和简单的方法是:

library(tidyr)
library(dplyr)
#' Checks whether or not a column is a nested data frame
#'
#' @param col column
#'
#' @return TRUE if it is a nested data frame (List of data frames), otherwise FALSE
#' @export
#'
#' @examples
is.nested.data.frame = function(col){
if(is.list(col)){
if(length(col) > 0){ # We need to be careful about empty lists for the next step
if(is.data.frame(col[[1]])){
return(TRUE)
}
}
}
return(FALSE)
}
is.nested.data.frame((mpg %>% group_by(manufacturer) %>% nest())$manufacturer)
is.nested.data.frame((mpg %>% group_by(manufacturer) %>% nest())$data)

df = mpg %>% group_by(manufacturer) %>% nest()
df
df %>% mutate(across(where(is.nested.data.frame), length))

最新更新