首页 > 解决方案 > 如何编写代码来测试数据集的三行是否可以是R中三角形的边

问题描述

我是编程新手,遇到了问题。我将不胜感激任何帮助。问题是这样的:我有一个包含 146,610 行数字的文件,每行(三列)三个正数。对于每一行,我必须确定这三个数字是否可以是三角形的边。对于每一行,我希望程序返回 0 或 1,其中 0 表示“不是三角形”,1 表示“它是三角形”。我希望将这些值放在一个向量中,该向量isTriangle将用于问题的下一部分。到目前为止,这是我的代码,但我知道这是完全错误的。请指导我正确的方式。

triangles <- read.csv(filename, header = FALSE, col.names = c("a", "b", "c"))
for(i in 1:nrow(triangles)) {
  if (triangles$a + triangles$b > triangles$c 
      || triangles$a + triangles$c > triangles$b ||
      triangles$c + triangles$b > triangles $a) {

数据集的前几行

标签: rfunctionloopsfor-loopif-statement

解决方案


df <- data.frame(a = c(10652.06,5066.678,255.2218,301.0861,8907.806,2471.524,10824.15),
           b = c(4054.905,1631.475,9935.731,2607.451,1605.074,6580.303,4374.1),
           c = c(6070.151,3002.47,10338.6,3853.397,6465.37,4020.112,5512.144
                 ))
triangles <- df
for(i in 1:nrow(triangles)) {
  if(triangles$a[i] + triangles$b[i] > triangles$c[i] 
     & triangles$a[i] + triangles$c[i] > triangles$b[i] &
     triangles$c[i] + triangles$b[i] > triangles$a[i]){
    triangles$isTriangle[i] <- 1
  }else{
    triangles$isTriangle[i] <- 0
  }
}
# solution
         a        b         c isTriangle
1 10652.0600 4054.905  6070.151          0
2  5066.6780 1631.475  3002.470          0
3   255.2218 9935.731 10338.600          0
4   301.0861 2607.451  3853.397          0
5  8907.8060 1605.074  6465.370          0
6  2471.5240 6580.303  4020.112          0
7 10824.1500 4374.100  5512.144          0

除了 ,你做的一切都是正确的||,你必须&改用。我希望这有帮助


推荐阅读