Random.length
如果值落入基于 data.frame 的给定区间,我想分配值(概率)Data$Measure
。
样本数据:
set.seed(123)
Data <- data.frame(Measure=sort(rnorm(10,5,2),decreasing=FALSE),
Probability=sort(runif(10,0,1),decreasing=FALSE))
Random.length <- as.vector(sort(rnorm(5,5,2),decreasing=FALSE))
在这里,我希望能够将概率分配给与 data.frameRandom.length
中的值相对应的向量。Measure
Data
这是我尝试过的。它有点工作。(只是为了表明我的意思......)
AssignValue <- function (x,y,z){
CopyNumber <- rep(0, length(x))
for(i in 1:length(x)){
if(x[i] <= y[1]) { CopyNumber[i] <- z[1]
} else if(x[i] > y[1] & x[i] < y[2]) { CopyNumber[i] <- z[2]
} else if(x[i] > y[2] & x[i] < y[3]) { CopyNumber[i] <- z[3]
} else if(x[i] > y[3] & x[i] < y[4]) { CopyNumber[i] <- z[4]
} else if(x[i] > y[4] & x[i] < y[5]) { CopyNumber[i] <- z[5]
} else if(x[i] > y[5] & x[i] < y[6]) { CopyNumber[i] <- z[6]
} else if(x[i] > y[6] & x[i] < y[7]) { CopyNumber[i] <- z[7]
} else if(x[i] > y[7] & x[i] < y[8]) { CopyNumber[i] <- z[8]
} else if(x[i] > y[8] & x[i] < y[9]) { CopyNumber[i] <- z[9]
} else if(x[i] > y[9]) { CopyNumber[i] <- z[10]
}
}
CopyNumber
}
AssignValue(Random.length,Data$Measure,Data$Prob)
现在我的 data.frameData
的长度为 51,所以我的实际循环最多 ...z[51] 基本上扫描整个 data.frame。我只是为了演示而缩短了这个。所以实际的解决方案应该能够应对可能的任意长度。
此外,该解决方案应该能够使用任意长度的Random.length
向量。
编辑:循环结束时的小错误,现已更正。