Как получить кадр данных с теми же данными, что и уже существующая матрица?
Упрощенный пример моей матрицы:
mat <- matrix(c(0, 0.5, 1, 0.1, 0.2, 0.3, 0.3, 0.4, 0.5),
ncol=3, nrow=3,
dimnames=list(NULL, c("time", "C_0", "C_1")))
> mat
time C_0 C_1
[1,] 0.0 0.1 0.3
[2,] 0.5 0.2 0.4
[3,] 1.0 0.3 0.5
Я хотел бы создать фрейм данных, который выглядит так:
name time val
1 C_0 0.0 0.1
2 C_0 0.5 0.2
3 C_0 1.0 0.3
4 C_1 0.0 0.3
5 C_1 0.5 0.4
6 C_1 1.0 0.5
Все мои попытки довольно неуклюжи, например:
data.frame(cbind(c(rep("C_1", 3), rep("C_2", 3)),
rbind(cbind(mat[,"time"], mat[,"C_0"]),
cbind(mat[,"time"], mat[,"C_1"]))))
Есть ли у кого-нибудь идеи, как сделать это более элегантно? Обратите внимание: мои реальные данные содержат еще несколько столбцов (40 столбцов).