通过逆坐标进行详尽搜索

时间:2018-06-30 01:33:37

标签: for-loop if-statement coordinates inverse

我有一个TRUE和FALSE值的表,并想根据这些TRUE和FALSE值的模式创建一个列表/表。

具体地说,我想考虑坐标与倒置坐标的关系。

例如,如果单元格mydata [x,y]的值为TRUE,而单元格mydata [y,x]的值为TRUE,则我想记录mydata [x,y]的列名并在mydata [y,x]的列名之间加上“ <->”。

我可以使用以下代码在行数之间循环,但这并没有详尽地考虑TRUE和FALSE的模式。它受行数的限制。没有此限制,for循环将超出范围。

我该如何使用代码来考虑所有的TRUE / FALSE坐标/反坐标组合,而不会超出范围?

random.base <- data.frame(replicate(30,sample(0:1,30,rep=TRUE)))
boolean.table <- random.base == "1"

# this code varies the distance of i and j, but it only records 29 patterns 

output <- NULL

for(i in 1:(nrow(boolean.table)-1)){
  print(i)
  for(j in (i+1):nrow(boolean.table)){
    if(boolean.table[i,j] == "TRUE" & boolean.table[j,i] == "TRUE"){
      output[i] <- paste(colnames(boolean.table)[i], "<->", colnames(boolean.table)[j])
} else if(boolean.table[i,j] == "TRUE" & boolean.table[j,i] == "FALSE"){
  output[i] <- paste(colnames(boolean.table)[i], "<-", colnames(boolean.table)[j])
} else if(boolean.table[i,j] == "FALSE" & boolean.table[j,i] == "TRUE"){        
  output[i] <- paste(colnames(boolean.table)[i], "->", colnames(boolean.table)[j])
} else {
  NULL
}
}
}

0 个答案:

没有答案