df1<-data.frame(ID=1:3,test=2:4,category=1)
df2<-data.frame(ID=1:2,test=4:5,test1=2:3,category=2)
Mylist<-list(df1,df2)
我尽力了
array1<-array(unlist(Mylist))
预期结果是array 1如下所示
array1[ , ,1]
[,1] [,2] [,3]
[1,] 1 2 1
[2,] 2 3 1
[3,] 3 4 1
array1[ , ,2]
[,1] [,2] [,3] [,4]
[1,] 1 4 2 2
[2,] 2 5 3 2
但是我不知道如何指定数组的维度,因为每个矩阵/数据框都有不同的列/行号。
谢谢你的帮助。
2条答案
按热度按时间y1aodyip1#
一种策略是使用
abind
。1.我们确定列表中的最大行数和列数
1.用NA填充每个矩阵/df
1.最后,使用
abind
将列表转换为三维数组31moq8wy2#
数组不能被打乱。如果
a
是结果数组,则a[,,1]
和a[,,2]
必须具有相同的维度。L
,并从中计算IDs
的集合。将L
的每个组件与IDs
合并,并将结果行绑定到单个宽表单数据框中。使用pivot_longer
将其转换为长格式,然后使用tapply
将其转换为数组。这会将dnn变量放入dimnames而不是数据中。如果您更喜欢将它们放在数据中,请参见(2)。给予
IDs
,然后计算宽格式 DataframeDF
,如(1)所示,然后使用`abind。给出:
注意事项
如问题所示,输入包括
更新
添加了(1)。