R将列表拆分为不相等的块,块大小由另一个向量

时间:2016-12-05 03:39:27

标签: r list vector

我有一个如下列表:

l2<-structure(c(-1, 1, -1, -1, -1, -1, -1, -1, -1, 1, -1, -1, -1, 
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1, 1, 1, 
-1, -1, -1, -1, -1, -1, 1, 1, -1, -1, -1, -1, -1, 1, 1, 1, -1, 
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1, 1, -1, -1, -1, -1, 
-1, -1, -1, -1, -1, -1, -1, 1, -1, -1, -1, -1, -1, -1, -1, -1, 
-1, -1, -1, -1, 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1, -1, -1, 
-1, -1, -1, -1, -1, -1, -1, -1, -1, 1, -1, -1, -1, -1, -1, -1, 
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1, 
1, -1, -1, -1, -1, 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
-1, 1), .Names = c("11", "12", "13", "14", "15", "16", "17", 
"18", "19", "110", "111", "112", "113", "114", "115", "116", 
"117", "118", "119", "120", "121", "122", "123", "124", "125", 
"126", "127", "128", "129", "130", "131", "132", "133", "134", 
"135", "136", "137", "138", "139", "21", "22", "23", "24", "25", 
"26", "27", "28", "29", "210", "211", "212", "213", "214", "215", 
"216", "217", "218", "219", "220", "221", "222", "223", "224", 
"225", "226", "227", "228", "229", "230", "231", "232", "233", 
"234", "235", "236", "237", "238", "239", "240", "241", "242", 
"243", "244", "245", "246", "31", "32", "33", "34", "35", "36", 
"37", "38", "39", "310", "311", "312", "313", "314", "315", "316", 
"317", "318", "319", "320", "321", "322", "323", "324", "325", 
"326", "327", "328", "329", "330", "331", "332", "333", "334", 
"335", "336", "337", "338", "339", "340", "341", "342", "343", 
"344", "345", "346", "347", "348", "41", "42", "43", "44", "45", 
"46", "47", "48", "49", "410", "411", "412", "413", "414", "415", 
"416", "417", "418", "419", "420", "421", "422", "423", "424", 
"425", "426", "427", "428", "429", "430", "431", "432", "433", 
"434", "435", "436", "437", "438", "439", "440", "441", "442", 
"443"))

我想将此向量拆分为不相等的块。每个块应遵循以下列表:

num1<-structure(list(`1` = 39L, `2` = 46L, `3` = 48L, `4` = 43L), .Names = c("1", 
"2", "3", "4"))

这意味着,第一个块应该具有来自l2的前39个元素,第二个块应该具有接下来的46个元素。

我尝试使用split(l2, rep(1:4, c(num1),但我收到错误,&#39;错误代表(1:4,c(num)):无效&#39;次&#39;参数&#39;

我该如何避免此错误?

1 个答案:

答案 0 :(得分:0)

我们可以使用

 split(l2, rep(seq(4), num1))