使用 apply() 系列跨列重复绘图()

问题描述 投票:0回答:1

我想使用相同的

plot()
结构使用不同列的 y 值生成多个图,每列生成一个图。

我尝试过这个脚本:

multi.plot <- apply(x = dat[,6:40], plot(dat[,i] ~ dat$elevation, xlim = c(2700,3500), ylab=names(dat)[i]))

但我收到以下错误消息:

Error in match.fun(FUN) : argument "FUN" is missing, with no default

我怀疑我没有正确索引它,但似乎

apply()
未能将
plot()
识别为我的功能。

我的问题是: (1) 如何以

plot()
能够识别的方式应用
apply()
功能? (2) 我应该如何索引我要求
apply()
从中绘制 y 值的列?

r plot indexing apply
1个回答
2
投票

您正在遵循一种不常见的方法。不过,这可能对你有用

dat <- data.frame(x = 1:10, 
                  y1 = rnorm(10), 
                  y2 = rnorm(10), 
                  y3 = rnorm(10))

apply(X = dat[, 2:4], MARGIN = 2, FUN = \(i) plot(x = dat$x, y = i))

要使用

apply()
,我们需要指定
MARGIN
参数:
1
表示在行上迭代,
2
表示在列上迭代。

lapply()
是几个替代方案之一:

invisible(lapply(X = colnames(dat)[2:4], 
                 FUN = \(i) plot(x = dat$x, y = dat[, i], ylab = i)))

invisble()
阻止我们拥有一个混乱的控制台。 注意。我使用
i
因为这封信是循环内使用的典型运行索引。单击此处,了解
*apply()
系列的全面介绍。

© www.soinside.com 2019 - 2024. All rights reserved.