Одним из вариантов может быть:
as.list(setNames(raw_df$value, raw_df$cat))
$a
[1] "high"
$b
[1] "mid"
$c
[1] "low"
Один из способов решения вашей проблемы:
split(raw_df$value, raw_df$cat)
$a
[1] "high"
$b
[1] "mid"
$c
[1] "low"
Другим вариантом может быть упрощение до character
(вектор):
with(raw_df, structure(value, names=cat))
#> a b c
#> "high" "mid" "low"
## with class #> [1] "character"
Если формат list
не является строгим требованием.
Формат списка с: with(raw_df, structure(as.list(value), names=cat))
@s_baldur Конечно. Интересно, действительно ли нужен формат списка, учитывая структуру raw_df
.
Или вы можете использовать tibble::deframe
> as.list(tibble::deframe(raw_df))
$a
[1] "high"
$b
[1] "mid"
$c
[1] "low"
Использование карты():
with(raw_df, Map(\(x,y) y, cat, value))
# $a
# [1] "high"
#
# $b
# [1] "mid"
#
# $c
# [1] "low"
Альтернативой списку может быть вектор символов с именованными элементами.