2015-05-26 62 views
2

我試圖將列表中的元素細分爲單獨的列。將列表中的元素細分爲單獨的列

的樣本數據:

d <- list(c(1,2,3,4,5,6,7,8),c(1,2,3,4,5,6,7,8)) 

這是一個列表的元素1的解決方案:

numrows <- (row(as.matrix(d[[1]])) %% 2) 
TabNum <- sapply(1:2, function(x) as.matrix(d[[1]])[numrows==numrows[x,], ,drop=FALSE]) 

如何爲整個列表這樣做有效地?

這裏是開始,但後來我發現與sapply組合很麻煩,無論如何這是真正的黑客,必須有更好的解決方案。

numrows.list <- lapply(1:length(d), function(i) (row(as.matrix(d[[i]])) %% 2)) 

因此,對於d列表將有4列。因此,所需的輸出是:

 [,1] [,2] [,3] [,4] 
[1,] 1 2 1 2 
[2,] 3 4 3 4 
[3,] 5 6 5 6 
[4,] 7 8 7 8 
+0

@akrun:我要真正定義第一是我真正需要的! :) – Maximilian

+1

@Maximillian這是我的第一個,沒有看到'row'部分 – akrun

回答

2

這似乎在這裏工作

do.call(cbind, lapply(d, function(x) matrix(x, ncol = 2, byrow = TRUE))) 
#  [,1] [,2] [,3] [,4] 
# [1,] 1 2 1 2 
# [2,] 3 4 3 4 
# [3,] 5 6 5 6 
# [4,] 7 8 7 8 
+1

爲什麼我無法弄清楚自己?!謝謝! – Maximilian

相關問題