在 R 中使用带有对象向量的“lines”命令

Posted

技术标签:

【中文标题】在 R 中使用带有对象向量的“lines”命令【英文标题】:Use "lines" command with a vector of objects in R 【发布时间】:2015-06-12 14:03:35 【问题描述】:

我正在使用 R 来分析红外光谱。我要做的是制作一个对象列表或向量,在本例中为 Spectras,并将它们绘制到同一个“窗口”中。 我将命令plot(Spectrum1,...) 用于第一个 Spectrum 和命令

lines(Spectrum2,...) 
lines(Spectrum3,...) 
...

对于以下光谱。这很好用,但我想知道是否可以制作光谱的列表或向量,例如

Spectras <- c(Spectrum2, Spectrum3,...)

Spectras <- list(Spectrum2, Spectrum3,...)

并将它们绘制在一个命令行中,例如:

lines(Spectras,..)

如果是列表,R 表示

'x' 是一个列表,但没有组件 'x' 和 'y'

如果我使用c() 命令执行此操作,它只会将光谱一个接一个地绘制出来。

一些想法,如何让它发挥作用?

【问题讨论】:

【参考方案1】:

使用list,然后使用lapplyplyr::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中使用带有向量而不是可变数量的参数的sprintf

如何使用带有R的遗传算法优化支持向量机的参数

R:带有列表的交叉引用向量,HELP:基于正命中附加新向量

R中的字符向量作为带有knitr的逐项列表

R语言使用names函数为向量vector中的所有数据对象设置名称使用names函数查看向量中所有数据的名称

使用带有引用的对象向量的 C++ 语法