【发布时间】:2022-01-15 10:47:13
【问题描述】:
如果这是一个重复的问题,我很抱歉,但我找不到任何我能理解的答案。
我正在尝试制作一个简单的用户定义函数(我的第一次尝试),以便更轻松地探索更大的数据集。数据具有这种基本形式。
ID <- c("A","A","A","A","A","B","B","B","B","B")
x <- seq(1:10)
y <- sample(1:100, 10)
z <- sample(1:100, 10)
data <- data.frame(x,y,z)
这是一个有效的简单功能,但只是部分有效。简而言之,我希望能够在函数中指定 ID,并为与该 ID 关联的数据制作一个 2 变量散点图:
summary_plot("A")
summary_plot <- function(ID_code) {
plot(data$x[data$ID==ID_code],data$y[data$ID==ID_code], xlim=c(0,10))
points(data$x[data$ID==ID_code],data$z[data$ID==ID_code], col="red")
如您所见,我首先绘制变量 y,然后添加变量 z 的点。问题是,有时 y 轴上变量 y 的数据范围超出了第一个图的范围(对于 x 来说不是问题,因为它有固定的范围)。
我的粗略解决方案是使用 max() 函数找到两个值的最大值,并将第一个图的 ylim 设置为该值,m。
summary_plot <- function(ID_code) {
max_y <- max(data$y[data$ID==ID_code]) ## max of y
max_z <- max(data$z[data$ID==ID_code]) ## max of z
maximum <- c(as.numeric(max_y),as.numeric(max_z)) # both in a vector
m <- (as.numeric(max(maximum))) #find the higher max
plot(data$x[data$ID==ID_code],data$y[data$ID==ID_code], xlim=c(0,10))
points(data$x[data$ID==ID_code],data$z[data$ID==ID_code], col="red", ylim=c(0,m)
}
所有这些代码在控制台中都可以正常工作,但在我执行该函数时什么也不做。该图已创建,但未指定 y 值。当我检查时,m 的值我得到 'Error: object 'm' not found'
如果有人能解释为什么这不起作用的基本原理,并提出解决方法,我将不胜感激。
提前致谢!
肖恩
【问题讨论】: