Calculates row products (the product of all elements in a row) for a matrix.
An optional colname for the resulting column vector can be supplied.
If colname is NULL or NA (the default),
the column name is set to the column type as given by coltype(a).
Examples
library(dplyr)
M <- matrix(c(1:6), ncol = 2, dimnames = list(paste0("i", 3:1), paste0("c", 1:2))) %>%
setrowtype("Industries") %>% setcoltype("Products")
rowprods_byname(M)
#> Products
#> i1 18
#> i2 10
#> i3 4
#> attr(,"rowtype")
#> [1] "Industries"
#> attr(,"coltype")
#> [1] "Products"
rowprods_byname(M, "E.ktoe")
#> E.ktoe
#> i1 18
#> i2 10
#> i3 4
#> attr(,"rowtype")
#> [1] "Industries"
#> attr(,"coltype")
#> [1] "Products"
# This also works with lists
rowprods_byname(list(M, M))
#> [[1]]
#> Products
#> i1 18
#> i2 10
#> i3 4
#> attr(,"rowtype")
#> [1] "Industries"
#> attr(,"coltype")
#> [1] "Products"
#>
#> [[2]]
#> Products
#> i1 18
#> i2 10
#> i3 4
#> attr(,"rowtype")
#> [1] "Industries"
#> attr(,"coltype")
#> [1] "Products"
#>
rowprods_byname(list(M, M), "E.ktoe")
#> [[1]]
#> E.ktoe
#> i1 18
#> i2 10
#> i3 4
#> attr(,"rowtype")
#> [1] "Industries"
#> attr(,"coltype")
#> [1] "Products"
#>
#> [[2]]
#> E.ktoe
#> i1 18
#> i2 10
#> i3 4
#> attr(,"rowtype")
#> [1] "Industries"
#> attr(,"coltype")
#> [1] "Products"
#>
rowprods_byname(list(M, M), NA)
#> [[1]]
#> Products
#> i1 18
#> i2 10
#> i3 4
#> attr(,"rowtype")
#> [1] "Industries"
#> attr(,"coltype")
#> [1] "Products"
#>
#> [[2]]
#> Products
#> i1 18
#> i2 10
#> i3 4
#> attr(,"rowtype")
#> [1] "Industries"
#> attr(,"coltype")
#> [1] "Products"
#>
rowprods_byname(list(M, M), NULL)
#> [[1]]
#> Products
#> i1 18
#> i2 10
#> i3 4
#> attr(,"rowtype")
#> [1] "Industries"
#> attr(,"coltype")
#> [1] "Products"
#>
#> [[2]]
#> Products
#> i1 18
#> i2 10
#> i3 4
#> attr(,"rowtype")
#> [1] "Industries"
#> attr(,"coltype")
#> [1] "Products"
#>
DF <- data.frame(M = I(list()))
DF[[1,"M"]] <- M
DF[[2,"M"]] <- M
rowprods_byname(DF$M[[1]])
#> Products
#> i1 18
#> i2 10
#> i3 4
#> attr(,"rowtype")
#> [1] "Industries"
#> attr(,"coltype")
#> [1] "Products"
rowprods_byname(DF$M)
#> [[1]]
#> Products
#> i1 18
#> i2 10
#> i3 4
#> attr(,"rowtype")
#> [1] "Industries"
#> attr(,"coltype")
#> [1] "Products"
#>
#> [[2]]
#> Products
#> i1 18
#> i2 10
#> i3 4
#> attr(,"rowtype")
#> [1] "Industries"
#> attr(,"coltype")
#> [1] "Products"
#>
ans <- DF %>% mutate(rs = rowprods_byname(M))
ans
#> M rs
#> 1 1, 2, 3,.... 18, 10, 4
#> 2 1, 2, 3,.... 18, 10, 4
ans$rs[[1]]
#> Products
#> i1 18
#> i2 10
#> i3 4
#> attr(,"rowtype")
#> [1] "Industries"
#> attr(,"coltype")
#> [1] "Products"
# Nonsensical
if (FALSE) rowprods_byname(NULL) # \dontrun{}