我在R中有以下代码,它完成了我想要做的事情但是我需要在循环中使它更有效,这样我就可以用样本数据运行这个测试10000次迭代的模拟。
使用任一数据集,因为我必须在两者上进行测试。
PerfectMate <- sample(1:20,20,replace = FALSE,prob = NULL)
date.mode <- PerfectMate[1:3]
marry.mode <- PerfectMate[4:20]
PerfectMate <- c(2,1,16,8,6,3,15,5,9,12,17,4,13,14,10,20,19,7,18,11)
date.mode <- PerfectMate[1:3]
marry.mode <- PerfectMate[4:20]
if (marry.mode[1] < min(date.mode)) {marry.rank <- marry.mode[1]} else {
if (marry.mode[2] < min(date.mode)) {marry.rank <- marry.mode[2]} else {
if (marry.mode[3] < min(date.mode)) {marry.rank <- marry.mode[3]} else {
if (marry.mode[4] < min(date.mode)) {marry.rank <- marry.mode[4]} else {
if (marry.mode[5] < min(date.mode)) {marry.rank <- marry.mode[5]} else {
if (marry.mode[6] < min(date.mode)) {marry.rank <- marry.mode[6]} else {
if (marry.mode[7] < min(date.mode)) {marry.rank <- marry.mode[7]} else {
if (marry.mode[8] < min(date.mode)) {marry.rank <- marry.mode[8]} else {
if (marry.mode[9] < min(date.mode)) {marry.rank <- marry.mode[9]} else {
if (marry.mode[10] < min(date.mode)) {marry.rank <- marry.mode[10]} else {
if (marry.mode[11] < min(date.mode)) {marry.rank <- marry.mode[11]} else {
if (marry.mode[12] < min(date.mode)) {marry.rank <- marry.mode[12]} else {
if (marry.mode[13] < min(date.mode)) {marry.rank <- marry.mode[13]} else {
if (marry.mode[14] < min(date.mode)) {marry.rank <- marry.mode[14]} else {
if (marry.mode[15] < min(date.mode)) {marry.rank <- marry.mode[15]} else {
if (marry.mode[16] < min(date.mode)) {marry.rank <- marry.mode[16]} else {
if (marry.mode[17] < min(date.mode)) {marry.rank <- marry.mode[17]} else {
marry.rank <- NA }
} } } } } } } } } } } } } } } }
marry.rank
答案 0 :(得分:0)
看起来您正在尝试执行以下操作:
idxs <- which(marry.mode < min(date.mode))
marry.rank <- if (length(idxs) > 0) marry.mode[idxs[1]] else NA
注意:考虑到@ r2evans评论中的建议(见下文),重写了答案。之前使用了ifelse
。