I am working on releasing a benchmark dataset for trees in RGB + Lidar and I'd like the format to match the most common use cases and packages. I had been intending on proving a tree index using the user_data column. Alot of preprocessing happens in python and i'm writing from laspy. I realized that user_data is clamped 0-255 (there are thousands of trees), meaning that trees do not have a unique index. I'm starting to write an extra dimension function

https://stackoverflow.com/questions/50815580/appending-an-index-to-laspy-file-las

but looking here, it looks like lidR is going to ignore those columns

https://cran.r-project.org/web/packages/lidR/vignettes/lidR-LAS-class.html

and i'll need users to do lasadddata anyways. Perhaps it would be best to just provide a csv lookup table based on x,y,z? With millions of points, will this be the best strategy? I'm worried about precision rounding among platforms. Thoughts welcome on how future users will best interact with extra dim data.

EDIT: The question was deemed too broad. So here is a literal example.

Here is a python pandas dataframe (taken from a laspy-like object) with the x,y,z coordinates of a point and an associated label. What is the best way to write this label information and load it in the R lidR package. 

```
pc.head()
              x            y       z   label
272  315547.689  4094399.467  12.288   562.0
287  315541.905  4094400.774   4.151  2233.0
289  315541.279  4094400.842   4.166  2233.0
291  315541.725  4094400.506   8.189  2233.0
292  315540.776  4094400.865   5.199  2233.0
```

One option is to write to csv and the use lasadddata function add the extra attribute "label" in R separately. However, for a reasonably large point cloud, this would create a 100MB file, which would then be read into R and then joined to ensure the vector order lined up

If you directly write the laspy point cloud, and stick the label data in the user_data column, values above 255 will be clamped by laspy. See link above.