r - 将 "lines"命令与 R 中的对象向量一起使用

标签 r list vector lines spectrum

我正在使用 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 然后使用 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 中的对象向量一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30805013/

相关文章:

c++ - Eigen在ios项目中的使用

regex - 在字符串中的第一个逗号处拆分

c++ - Rcpp:将列表中的 bool 值从 R 传递给采用 Rcpp::List 的 C++ 函数时出错

R:具有多个参数的 integrate() 函数

java - 如何将列表/ map 与组合框一起使用

python - 比较不同大小和数据的列表以输出差异

c++ - 将 char * 转换为 vector C++

r - R 中的图像平滑

r - 派生 R 列表元素的名称,但忽略 data.frame 列名称

c# - 使用 Vector<T> 的 SIMD 向量化 C# 代码运行速度比经典循环慢