首页 > 解决方案 > 在 R 中,将 data.frame 转换为不包含列表的标准小标题

问题描述

如何将以下 data.frame 转换为可比较/传统的小标题(即不包含列表);为什么会发生这种行为/可以避免吗?

df_test <- structure(list(Dim1 = structure(list(0.1, 4, NA_real_, NA_real_, 
                                     NA_real_), .Names = c("one", "two", "adfae", NA, "")), Dim2 = structure(list(
                                       2, 5, NA_real_, NA_real_, NA_real_), .Names = c("one", "two", 
                                                                                       "adfae", NA, "")), Dim3 = structure(list(3, 6, NA_real_, NA_real_, 
                                                                                                                                NA_real_), .Names = c("one", "two", "adfae", NA, ""))), class = "data.frame", row.names = c("one", 
                                                                                                                                                                                                                            "two", "adfae", "NA.", "X"))
tbble_test <- as_tibble(df_test)
tibble_test

提前致谢

标签: rtidyversetibble

解决方案


每一列都是一个list

str(df_test)
#'data.frame':  5 obs. of  3 variables:
# $ Dim1:List of 5
#  ..$ one  : num 0.1
#  ..$ two  : num 4
#  ..$ adfae: num NA
#  ..$ NA   : num NA
#  ..$      : num NA
# $ Dim2:List of 5
#  ..$ one  : num 2
#  ..$ two  : num 5
#  ..$ adfae: num NA
#  ..$ NA   : num NA
#  ..$      : num NA
# $ Dim3:List of 5
#  ..$ one  : num 3
#  ..$ two  : num 6
#  ..$ adfae: num NA
#  ..$ NA   : num NA
#  ..$      : num NA

我们可以先unlist,它应该工作

df_test[] <- lapply(df_test, unlist)
as_tibble(df_test)

或使用tidyverse

library(dplyr)
df_test %>%
     mutate(across(everything(), unlist)) %>% 
     as_tibble

推荐阅读