如何从R data.table到矩阵列表

时间:2018-05-11 13:10:50

标签: r data.table

我有以下data.table:

enter image description here

如何将其转换为矩阵列表,对于每个MV值,我有3个矩阵(消耗,dailySd和isAbsentBool),其中包含每个时间段的元素(总共有178个周期):

enter image description here

2 个答案:

答案 0 :(得分:1)

使用lapply(as.list(unique(DF$mv)), function(x){return(as.matrix(DF[(mv==x), list(consumption, dailySd, period)]))})

lapply

lapply的第一个参数是mv值的唯一列表,第二个参数是过滤data.table的函数,保留相关列并将其转换为矩阵。 text会自动循环遍历列表并返回列表

答案 1 :(得分:0)

使用data.table::split编写此内容的另一种方式:

lapply(
    split(DT, by="mv", keep.by=FALSE),
    function(DT) DT[, as.matrix(.SD),
        .SDcols=c("consumption", "dailySd", "isAbsentBool")]
)

数据:

library(data.table)
DT <- data.table(consumption=c(10,10,50,70),
    dailySd=c(1,2,3,4),
    isAbsentBool=c(0,0,0,0),
    mv=c("A.V1", "A.V1", "A.v2", "A.V3"),
    period=c(1,2,3,4))