在数据框中排列列表时出现意外错误

时间:2018-02-25 01:39:18

标签: r list dataframe

我有以下数据......

mm1 <- c("A_01","S_1", 1, "S_2", 2, "S_3", 3)    
mm2 <- c("A_02","S_10", 10, "S_20", 20, "S_30", 30, "S_40",40)
MM <- list(mm1,mm2)

......我需要按以下方式安排:

  const   V2 V3
1  A_01  S_1  1
2  A_01  S_2  2
3  A_01  S_3  3
4  A_02 S_10 10
5  A_02 S_20 20
6  A_02 S_30 30
7  A_02 S_30 40

请注意,每行MM的第一个元素是一个键,以下元素以duplets排列。因此,以下函数提供了所需的转换:

convert.res <- function (M){
  const <- M[1]
  M <- M[-1]
  tab <- matrix(M, nrow=2)
  tab <- data.frame(t(rbind(const,tab)))
}

以便a <- convert.res(unlist(MM[1]))正确提供

  const  V2 V3
1  A_01 S_1  1
2  A_01 S_2  2
3  A_01 S_3  3 

但是,在申请MM b<-convert.res(unlist(MM))时,它不起作用:

Warning message:
In matrix(M, nrow = 2) :
  data length [13] is not a sub-multiple or multiple of the number of rows [2]
> b
  const   V2   V3
1  A_01  S_1    1
2  A_01  S_2    2
3  A_01  S_3    3
4  A_01 A_02 S_10
5  A_01   10 S_20
6  A_01   20 S_30
7  A_01   30  S_1

发生了什么事?有没有更聪明的方法来实现我的目标? 谢谢大家。

0 个答案:

没有答案