Один из подходов предполагает использование plyr
.Я подозреваю, что у вас также может быть больше, чем эти два столбца, поэтому пусть
df <- data.frame(name = c("chr", "test"), ncol = c(2, 3), a = 1:2)
# name ncol a
# 1 chr 2 1
# 2 test 3 2
Тогда
dlply(df, .(name), function(r) as.list(r[-1]))
# $chr
# $chr$ncol
# [1] 2
#
# $chr$a
# [1] 1
#
#
# $test
# $test$ncol
# [1] 3
#
# $test$a
# [1] 2
#
#
# attr(,"split_type")
# [1] "data.frame"
# attr(,"split_labels")
# name
# 1 chr
# 2 test