我想使用相同的
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 值的列?
您正在遵循一种不常见的方法。不过,这可能对你有用
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()
系列的全面介绍。