Записи фрейма данных не могут быть списками, они должны быть атомарными. Вероятно, вы хотите получить именованный список векторов:
df <- data.frame( col1 = c('a','a','b','c'), col2 = c(50,80,40,20))
with(df, tapply(col2, col1, list))
который является именованным списком:
$a
[1] 50 80
$b
[1] 40
$c
[1] 20