我有一个数据框,我想按行将其转换为嵌套列表。但是,我需要将多个列分组到每个嵌套元素中的单独矩阵中。我见过的所有解决方案都将每列放入一个唯一元素中。我想使用列值创建单独的矩阵。
例如,如果我有如下数据框:
df = data.frame(a=c("foo", "bar", "baz"), b=1:3, c=3:1, d=4:6, e=6:4)
我想将其转换为如下形式:
dflist <- list(foo=list(as.matrix(c(1,3)),
as.matrix(c(4,6))),
bar=list(as.matrix(c(2,2)),
as.matrix(c(5,5))),
baz=list(as.matrix(c(3,1)),
as.matrix(c(6,4))))
使用
purrr
:在基础 R 中,您可以
split
使用以下方法为每个方法创建列表lapply
:或者用一行来表达,感谢@Friede 的宝贵建议:
两种方法均给出输出:
对于每一行,在新的列中创建矩阵列表
data
,然后提取该列。请注意,在问题中,输入是整数,但dflist
包含双精度数。我们假设这不是预期的,而是使用dflist
末尾注释中定义的值。笔记