我不是 100% 确定我是否理解您的问题。当然,具有嵌套列的数据框可能会令人不快。它仍然是显示数据的一种非常有效的方式。由于我不确定您要分析数据的哪一部分,或者 data.frame 中的列表看起来如何(我不想下载数据),所以我的回答不会太具体。
但是,也许您可以仅将数据减少到分析所需的变量并相应地对其进行重塑......也许是这样的......
x <- dplyr::tibble(ID=c(1,2,3),
VAR1=list(c(1,2,3,4),
c(3,3,3,3),
c(1,3,1,2)))
# A tibble: 3 x 2
ID VAR1
<dbl> <list>
1 1 <dbl [4]>
2 2 <dbl [4]>
3 3 <dbl [4]>
lapply(seq(1,nrow(x)),function(idx){
dplyr::as_tibble(x$VAR1[[idx]]) %>%
dplyr::mutate(ID=x$ID[idx])}) %>%
dplyr::bind_rows()
# A tibble: 12 x 2
value ID
<dbl> <dbl>
1 1 1
2 2 1
3 3 1
4 4 1
5 3 2
6 3 2
7 3 2
8 3 2
9 1 3
10 3 3
11 1 3
12 2 3
更新:保留名字
保留名称的解决方案与上面的解决方案非常相似。最大的区别是使用dplyr::tibble
af dplyr::as_tibble
(不知道为什么我首先使用后者)。
# some fake data
x <- dplyr::tibble(ID=c(1,2,3),
VAR1=list(c(1,2,3,4) %>% magrittr::set_names(c("A","B","C","D")),
c(3,3,3,3) %>% magrittr::set_names(c("E","F","G","H")),
c(1,3,1,2) %>% magrittr::set_names(c("I","J","K","L"))))
# unnesting variable
y <- lapply(seq_len(nrow(x)), function(idx){
dplyr::tibble(VAR1=x$VAR1[[idx]],
ID=x$ID[idx])}) %>%
dplyr::bind_rows()
> y$VAR1
A B C D E F G H I J K L
1 2 3 4 3 3 3 3 1 3 1 2