【发布时间】:2020-09-25 08:58:16
【问题描述】:
我有一些数据试图在 R 中显示,其中每个数据点由两个通过一条线连接的 x 值组成。我正在尝试创建一个为每个分配y值的函数,以便可以在不重叠的情况下显示行-y值是任意的,但想法是将其显示为1到6之间的y的最低整数值(包括)不与任何前面的值重叠。
类似这样的: chart
我的策略是创建一个循环,通过测试所有正在进行的数据点来计算每个数据点的 y 值,以查看它们的端点 (x2) 是否大于相关数据点的起点 (x1)。这个想法是创建一个与当前值冲突的高度级别列表,然后将 y 值设置为最低的非冲突值。这是我的代码,不幸的是它没有做我想做的事情,而是为除最后一个之外的所有 y 值返回 NA,它给出为 1。我做错了什么?
calculate.height <- function(i) {
if (i==1){height <- 1}
else {
bad.height.list <- c()
for (j in i-1){
if (x2[j] > x1[i] - 0.01) {append(bad.height.list,y[j])}
}
bad.levels <- c(1,2,3,4,5,6) %in% bad.height.list
height <- min(which(bad.levels==FALSE))
}
return(height)
}
x1 <- c(1,1.5,2.7,3,4.75,9,11,15,15.1,18)
x2 <- c(2,4,3,7,6,9.5,17,15.6,24,19)
y <- c()
for (i in length(x1)) {
y[i] <- calculate.height(i)
}
【问题讨论】:
-
如果您在帖子中为相关示例添加预期的向量
y,这将很有用。一般来说,请避免嵌入图形;最好把相关数据放进去。