2017-04-08 68 views
1

我有一个矩阵,我喜欢在重叠部分自动分割并将结果存储在单个列表对象中。我喜欢有一个没有循环的解决方案。将矩阵的部分存储在列表对象中?在R

mat = matrix(c(1:24), 4) 

list = NULL 
list[[1]] = mat[,c(1:2)] 
list[[2]] = mat[,c(2:3)] 
list[[3]] = mat[,c(3:4)] 
list[[4]] = mat[,c(4:5)] 
list[[5]] = mat[,c(5:6)] 

预计输出

list 

那是什么我都喜欢,但没有使用循环。

+0

看'embed'来帮助你列重叠? – A5C1D2H2I1M1N2O1R2T1

回答

1

试试这个:

lapply(seq_len(ncol(mat)-1), function(i) mat[,c(i,i+1)]) 
+0

看起来不错,谢谢 –

+0

顺便说一句,为什么你用'seq_len'而不是'c(1:(ncol(mat)-1))'? –

+1

@和'seq_len(n)'和'c(1:n)'是相同的。 – 989