我正在使用 R 分析红外光谱。我想要做的是制作对象列表或矢量,在本例中为光谱,并将它们绘制到同一个“窗口”中。
我使用命令 plot(Spectrum1,...)
作为第一个 Spectrum 和命令
lines(Spectrum2,...)
lines(Spectrum3,...)
...
以下光谱。这很有效,但我想知道我是否可以制作光谱的列表或矢量,例如
Spectras <- c(Spectrum2, Spectrum3,...)
或
Spectras <- list(Spectrum2, Spectrum3,...)
并在一个命令行中绘制它们,例如:
lines(Spectras,..)
如果是列表,R 表示
'x' is a list, but does not have components 'x' and 'y'
如果我使用 c()
命令执行此操作,它只会一个接一个地绘制光谱。
一些想法,如何让它发挥作用?
最佳答案
使用 list
然后使用 lapply
或 plyr::l_ply
函数。如果光谱列表称为“光谱”,每个分量都是一个矩阵或数据框,其中包含 x 和 y 列:
lapply(Spectra, lines)
或者
plyr::l_ply(Spectra, lines)
或者,使用 ggplot2:
library("ggplot2")
library("plyr")
SpecDf <- as.data.frame(do.call("rbind", Spectra))
SpecDf$SpectrumNumber <- rep(1:length(Spectra), plyr::laply(Spectra, nrow))
ggplot(SpecDf, aes(x = x, y = y, colour = SpectrumNumber)) + geom_line()
关于r - 将 "lines"命令与 R 中的对象向量一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30805013/