簡體   English   中英

如何按因子將 data.frame 拆分為數組?

[英]How to split a data.frame into an array by a factor?

如果我們想按“因子” f拆分data.frame ,我們通常會這樣做:

split(df1, df1$f)

但是當我們想要將data.frame拆分成一個array時,我們該怎么做呢? 由於兩個t ,我發現我的代碼有點尷尬,而且max可能有點不可靠:

A <- array(t(as.matrix(df1)), dim=c(ncol(df1), max(df1$id), max(df1$f)))
apply(A, c(1, 3), t)

有沒有更簡單的基礎 R 解決方案?

以下不會給我我想要的東西,因為str仍然會產生list s。

as.array(split(df1, df1$f))
as.array(lapply(split(df1, df1$f), as.matrix))
as.array(lapply(split(df1, df1$f), function(x) matrix(unlist(x), nrow(x))))

數據

df1 <- structure(list(id = c(1L, 2L, 3L, 4L, 5L, 1L, 2L, 3L, 4L, 5L, 
1L, 2L, 3L, 4L, 5L), f = c(1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 
2L, 3L, 3L, 3L, 3L, 3L), x1 = c(14L, 15L, 4L, 10L, 8L, 6L, 7L, 
2L, 5L, 9L, 3L, 12L, 13L, 1L, 11L), x2 = c(12L, 15L, 6L, 9L, 
1L, 14L, 11L, 2L, 7L, 4L, 8L, 5L, 10L, 13L, 3L)), class = "data.frame", row.names = c(NA, 
-15L))
mylist = split(df1, df1$f)
dims = dim(mylist[[1]])
array(sapply(mylist, function(x){
    m = as.matrix(x)
    array(m, dim = dims)
}), dim = c(dims, length(mylist)))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM