Avoid standard list indexing which returns list for single index.
Examples
a <- list(1,4,'c', 'g')
class(a) <- "mixopt_list"
a
#> mixopt_list: [1] 1 4 c g
a[3]
#> [1] "c"
a[2:3]
#> mixopt_list: [1] 4 c
a[-(2:3)]
#> mixopt_list: [1] 1 g
as.data.frame(a)
#> X1 X2 X3 X4
#> 1 1 4 c g
b <- as.mixopt_list(c(1,2,3,4,5))
sum(b)
#> [1] 15
b^2
#> mixopt_list: [1] 1 4 9 16 25
b+b
#> [1] 2 4 6 8 10
b-b
#> [1] 0 0 0 0 0
b*b
#> [1] 1 4 9 16 25
b/b
#> [1] 1 1 1 1 1
c(b)
#> mixopt_list: [1] 1 2 3 4 5
c(b, b)
#> mixopt_list: [1] 1 2 3 4 5 1 2 3 4 5
c(b, 1)
#> mixopt_list: [1] 1 2 3 4 5 1
c(1, b)
#> [[1]]
#> [1] 1
#>
#> [[2]]
#> [1] 1
#>
#> [[3]]
#> [1] 2
#>
#> [[4]]
#> [1] 3
#>
#> [[5]]
#> [1] 4
#>
#> [[6]]
#> [1] 5
#>
c(a, b, a)
#> mixopt_list: [1] 1 4 c g 1 2 3 4 5 1 4 c g
c_mixopt_list(0, 1, 2, 3, 4, a, 5, 6, 7, 8, b, 9)
#> mixopt_list: [1] 0 1 2 3 4 1 4 c g 5 6 7 8 1 2 3 4 5 9
c_mixopt_list(NULL, 3, NULL, a, NULL, 66666, NULL, b)
#> mixopt_list: [1] 3 1 4 c g 66666 1 2 3 4 5