Преобразование кадра данных в специально отформатированный список для использования в функции - PullRequest
0 голосов
/ 01 декабря 2018

У меня есть фрейм данных, подобный следующему:

df = data.frame(name = c("chr", "test"), ncol = c(2, 3))

Однако для ввода в функцию (ComplexHeatmap) мне нужен список, подобный следующему:

list(chr = list(ncol = 2), test = list(ncol = 3))

Чтосамый простой способ преобразовать из этого фрейма данных в список этого формата?Выполнение as.list не дает правильный формат.

Спасибо!Jack

Ответы [ 2 ]

0 голосов
/ 01 декабря 2018

Один вариант будет split из base R

split(setNames(as.list(df$ncol), rep('ncol', nrow(df))), df$name)
0 голосов
/ 01 декабря 2018

Один из подходов предполагает использование 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...