Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/eclipse/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将写盒包装解决方案转换为txt或csv-R_R - Fatal编程技术网

将写盒包装解决方案转换为txt或csv-R

将写盒包装解决方案转换为txt或csv-R,r,R,我使用的是R中的BoxPacking包装 尽管我已经用很多方法对其进行了操作,但基本原因是我无法将解决方案导出到txt或最好是csv。我已尝试按照建议转换为数据帧或为txt写入行,但不断出现错误: Error in as.data.frame.default(x[[i]], optional = TRUE) : cannot coerce class "structure("Container", package = "BoxPacking")" to a data.frame 有人对这

我使用的是R中的BoxPacking包装

尽管我已经用很多方法对其进行了操作,但基本原因是我无法将解决方案导出到txt或最好是csv。我已尝试按照建议转换为数据帧或为txt写入行,但不断出现错误:

Error in as.data.frame.default(x[[i]], optional = TRUE) : 
  cannot coerce class "structure("Container", package = "BoxPacking")" to a data.frame
有人对这个包裹足够熟悉吗


谢谢

CSV似乎是个糟糕的选择,因为它是嵌套结构。JSON将更加合适

首先,为自定义对象定义一些json序列化程序:

library(jsonlite)

setMethod(jsonlite:::asJSON, "Box", function(x, ...) {
  jsonlite:::asJSON(
    list(
      Box = 
        list(
          origin = x@origin,
          length = unbox(x@length),
          height = unbox(x@height),
          width = unbox(x@width)
        )
    ),
    ...
  )
})

setMethod(jsonlite:::asJSON, "EMS", function(x, ...) {
  jsonlite:::asJSON(
    list(
      EMS = list(
        origin = x@origin,
        length = unbox(x@length),
        height = unbox(x@height),
        width = unbox(x@width)
      )
    ),
    ...
  )
})

setMethod(jsonlite:::asJSON, "Container", function(x, ...) {
  jsonlite:::asJSON(
    list(
      Container = 
        list(
          origin = x@origin,
          length = unbox(x@length),
          height = unbox(x@height),
          width = unbox(x@width),
          ems = x@ems
        )
    ),
    ...
  )
})
然后,只需对对象调用
jsonlite::toJSON()

[
  [
    {
      "Container": {
        "origin": [0, 0, 0],
        "length": 2,
        "height": 2,
        "width": 2,
        "ems": [
          {
            "EMS": {
              "origin": [0, 0, 0],
              "length": 2,
              "height": 2,
              "width": 2
            }
          }
        ]
      }
    }
  ],
  [
    {
      "Container": {
        "origin": [0, 0, 0],
        "length": 2,
        "height": 2,
        "width": 2,
        "ems": [
          {
            "EMS": {
              "origin": [0, 0, 0],
              "length": 2,
              "height": 2,
              "width": 2
            }
          }
        ]
      }
    }
  ],
  [
    {
      "Container": {
        "origin": [0, 0, 0],
        "length": 2,
        "height": 2,
        "width": 2,
        "ems": [
          {
            "EMS": {
              "origin": [0, 0, 0],
              "length": 2,
              "height": 2,
              "width": 2
            }
          }
        ]
      }
    }
  ],
  [
    {
      "Container": {
        "origin": [0, 0, 0],
        "length": 2,
        "height": 2,
        "width": 2,
        "ems": [
          {
            "EMS": {
              "origin": [0, 1.9, 0],
              "length": 2,
              "height": 0.1,
              "width": 2
            }
          },
          {
            "EMS": {
              "origin": [0, 0, 1.9],
              "length": 2,
              "height": 2,
              "width": 0.1
            }
          },
          {
            "EMS": {
              "origin": [1.4, 0.9, 0],
              "length": 0.6,
              "height": 1.1,
              "width": 0.4
            }
          },
          {
            "EMS": {
              "origin": [0.4, 0.9, 0.4],
              "length": 0.1,
              "height": 0.5,
              "width": 1.6
            }
          },
          {
            "EMS": {
              "origin": [0, 1.8, 0],
              "length": 0.4,
              "height": 0.2,
              "width": 0.4
            }
          },
          {
            "EMS": {
              "origin": [0, 1.4, 1.5],
              "length": 2,
              "height": 0.6,
              "width": 0.5
            }
          },
          {
            "EMS": {
              "origin": [0, 1, 1.4],
              "length": 0.4,
              "height": 1,
              "width": 0.6
            }
          },
          {
            "EMS": {
              "origin": [0, 1, 1.5],
              "length": 0.5,
              "height": 1,
              "width": 0.5
            }
          },
          {
            "EMS": {
              "origin": [0, 1, 1.4],
              "length": 0.5,
              "height": 0.4,
              "width": 0.6
            }
          },
          {
            "EMS": {
              "origin": [0.9, 1.4, 0],
              "length": 1.1,
              "height": 0.6,
              "width": 0.5
            }
          },
          {
            "EMS": {
              "origin": [1.4, 1.4, 0],
              "length": 0.6,
              "height": 0.6,
              "width": 2
            }
          },
          {
            "EMS": {
              "origin": [1.5, 1.3, 0],
              "length": 0.5,
              "height": 0.7,
              "width": 2
            }
          },
          {
            "EMS": {
              "origin": [1, 1.3, 1.5],
              "length": 1,
              "height": 0.7,
              "width": 0.5
            }
          },
          {
            "EMS": {
              "origin": [1, 0, 1.4],
              "length": 1,
              "height": 0.9,
              "width": 0.6
            }
          },
          {
            "EMS": {
              "origin": [1.4, 1.3, 0.9],
              "length": 0.6,
              "height": 0.7,
              "width": 1.1
            }
          },
          {
            "EMS": {
              "origin": [1, 1.3, 0.9],
              "length": 1,
              "height": 0.1,
              "width": 1.1
            }
          },
          {
            "EMS": {
              "origin": [1.4, 0, 0.8],
              "length": 0.6,
              "height": 0.4,
              "width": 0.1
            }
          },
          {
            "EMS": {
              "origin": [1.5, 0, 0],
              "length": 0.5,
              "height": 2,
              "width": 0.4
            }
          },
          {
            "EMS": {
              "origin": [1.8, 0, 0],
              "length": 0.2,
              "height": 2,
              "width": 0.9
            }
          },
          {
            "EMS": {
              "origin": [1.5, 0, 0.8],
              "length": 0.5,
              "height": 2,
              "width": 0.1
            }
          },
          {
            "EMS": {
              "origin": [1.5, 0.4, 0],
              "length": 0.5,
              "height": 1.6,
              "width": 0.9
            }
          },
          {
            "EMS": {
              "origin": [1.8, 0, 0],
              "length": 0.2,
              "height": 0.5,
              "width": 2
            }
          },
          {
            "EMS": {
              "origin": [1.5, 0, 0.8],
              "length": 0.5,
              "height": 0.5,
              "width": 1.2
            }
          },
          {
            "EMS": {
              "origin": [1.5, 0.4, 0],
              "length": 0.5,
              "height": 0.1,
              "width": 2
            }
          },
          {
            "EMS": {
              "origin": [0.8, 0, 1.4],
              "length": 1.2,
              "height": 0.4,
              "width": 0.6
            }
          },
          {
            "EMS": {
              "origin": [0.4, 0, 1.8],
              "length": 1.6,
              "height": 0.4,
              "width": 0.2
            }
          },
          {
            "EMS": {
              "origin": [0.4, 0, 1.8],
              "length": 0.1,
              "height": 2,
              "width": 0.2
            }
          },
          {
            "EMS": {
              "origin": [0.4, 0.4, 1.5],
              "length": 0.1,
              "height": 1.6,
              "width": 0.5
            }
          },
          {
            "EMS": {
              "origin": [0.4, 0.4, 1.4],
              "length": 0.1,
              "height": 1,
              "width": 0.6
            }
          }
        ]
      }
    },
    {
      "Box": {
        "origin": [0, 0, 0],
        "length": 1,
        "height": 1,
        "width": 0.4
      }
    },
    {
      "Box": {
        "origin": [0, 0, 0.4],
        "length": 1,
        "height": 0.4,
        "width": 1
      }
    },
    {
      "Box": {
        "origin": [0, 0.4, 0.4],
        "length": 0.5,
        "height": 0.5,
        "width": 1
      }
    },
    {
      "Box": {
        "origin": [0.5, 0.4, 0.4],
        "length": 1,
        "height": 1,
        "width": 0.5
      }
    },
    {
      "Box": {
        "origin": [0, 0.9, 0.4],
        "length": 0.4,
        "height": 1,
        "width": 1
      }
    },
    {
      "Box": {
        "origin": [0.5, 0.4, 0.9],
        "length": 0.5,
        "height": 1,
        "width": 1
      }
    },
    {
      "Box": {
        "origin": [1, 0, 0],
        "length": 0.5,
        "height": 0.4,
        "width": 0.4
      }
    },
    {
      "Box": {
        "origin": [1, 0, 0.9],
        "length": 0.5,
        "height": 0.5,
        "width": 0.5
      }
    },
    {
      "Box": {
        "origin": [0, 1, 0],
        "length": 1,
        "height": 0.4,
        "width": 0.4
      }
    },
    {
      "Box": {
        "origin": [1, 0.4, 0],
        "length": 0.5,
        "height": 0.5,
        "width": 0.4
      }
    },
    {
      "Box": {
        "origin": [1, 0, 0.4],
        "length": 0.4,
        "height": 0.4,
        "width": 0.5
      }
    },
    {
      "Box": {
        "origin": [0, 0, 1.4],
        "length": 0.4,
        "height": 1,
        "width": 0.5
      }
    },
    {
      "Box": {
        "origin": [1, 0.9, 0],
        "length": 0.4,
        "height": 0.5,
        "width": 0.4
      }
    },
    {
      "Box": {
        "origin": [1, 0.5, 0.9],
        "length": 1,
        "height": 0.4,
        "width": 0.5
      }
    },
    {
      "Box": {
        "origin": [0, 1.4, 0],
        "length": 0.4,
        "height": 0.4,
        "width": 0.4
      }
    },
    {
      "Box": {
        "origin": [0.4, 1.4, 0],
        "length": 0.5,
        "height": 0.5,
        "width": 0.5
      }
    },
    {
      "Box": {
        "origin": [0.4, 1.4, 0.5],
        "length": 1,
        "height": 0.5,
        "width": 1
      }
    },
    {
      "Box": {
        "origin": [1, 0.9, 0.9],
        "length": 1,
        "height": 0.4,
        "width": 1
      }
    },
    {
      "Box": {
        "origin": [1.4, 0, 0.4],
        "length": 0.4,
        "height": 0.4,
        "width": 0.4
      }
    },
    {
      "Box": {
        "origin": [0.4, 0, 1.4],
        "length": 0.4,
        "height": 0.4,
        "width": 0.4
      }
    }
  ]
] 

可能关闭,无最小可复制示例