我有以下数据......
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
发生了什么事?有没有更聪明的方法来实现我的目标? 谢谢大家。