I am not 100 % sure if I understood your problem. Of course, data frames with neseted columns can be unpleasant. Still it's quite an efficient way to display the data. As I am not sure which part of the data you want to analyse, or how the lists in your data.frame look like (I did not want to download the data), my answer won't be too specific.
But maybe you could reduce your data only to the variables you need for an analysis and the reshape it accordingly ... Maybe something like that ...
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
UPDATE: keep names
The solution to keep the names is quite similar to the one above. The big difference is to use dplyr::tibble
instead af dplyr::as_tibble
(no idea why I used the latter in the first place).
# 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