重塑数组时R重新映射xaxis

R remap xaxis when reshaping array

考虑以下示例:

nt <- 5
a <- array(runif(10), dim=c(nt, 2))
t <- seq(0, 10, length.out=nt)
a <- data.frame(a)

其中 a 是具有 5 个观测值和 2 个特征的时间序列,t 由每个观测值的时间索引向量组成。我想将数组 a 绘制为一个向量,这样 x 轴是时间索引,y 轴是数组 a.

中的原始强度

我可以用下面的代码来做到这一点:

  xlabel <- 'time'
  ylabel <- 'intensity'
  legend='feature'
  dsm = melt(a)
  colnames(dsm) <- c(xlabel, legend, ylabel)

  aplot <- ggplot(data=dsm, aes_string(x=xlabel, y=ylabel, group=legend, color=legend)) +
    geom_line(alpha=.2) +
    scale_y_continuous()

这会将观察结果绘制为 0, 1, ... 而不是我希望的 t 的元素,因为当我融化 a 它只是折叠原始数组这样x, y 索引只是原始矩阵中的坐标。有没有一种优雅的方法可以通过某种重新映射来替换这些坐标?例如,可以让我非常轻松地对 dsm 的时间列执行 {0:0, 1:t[1], 2:t[2], 3:t[3]...} 的操作?我可以看到我可以在 for 循环中手动执行此操作,但这似乎非常不必要,而且我确信有一些内置功能可以为我执行此操作。有什么建议吗?

library(ggplot2)
ggplot(melt(data.table(a, time = t), "time"), 
       aes(time, value, group = variable)) + 
    geom_line()