1

crosstalkと組み合わせて使用​​していreactableます。テーブルでは、グループ化された行を使用しています。ここで、javascript を使用して列の合計を追加する必要があります。

---
title: "Focal Chart (Top)"
output: 
  flexdashboard::flex_dashboard:
    orientation: rows
---

Inputs {.sidebar}
-------------------------------------

```{r}
library(crosstalk)
library(reactable)
cars <- MASS::Cars93[1:20, c("Manufacturer", "Model", "Type", "Price")]

data <- SharedData$new(cars)
filter_checkbox("type", "Type", data, ~Type)
    filter_slider("price", "Price", data, ~Price, width = "100%")
    filter_select("mfr", "Manufacturer", data, ~Manufacturer)
```

Row {data-height=500}
-------------------------------------

### Chart 1

```{r}
reactable(
  data,
  groupBy = "Manufacturer",
  searchable = TRUE,
columns = list(
  Price = colDef(aggregated = JS("
      function(cellInfo) {
        // Calculate sum of all values in visible rows
        var values = cellInfo.subRows.map(function(row) { return row.Price})
        var total = values.reduce(function(a, b) { return a + b }, 0)
        return total.toFixed(1)
      }
    "),  footer = JS("function(colInfo) {
        var values = colInfo.data.map(function(row) { return row[colInfo.column.id] })
        var total = values.reduce(function(a, b) { return a + b }, 0)
        return '$' + total.toFixed(2)
      }")
    ),
    Manufacturer = colDef(footer = "Total")
  ),
  defaultColDef = colDef(footerStyle = list(fontWeight = "bold"))
)
```

Row {data-height=500}
-------------------------------------

### empty

```{r}

```   

### empty

```{r}

```

ご覧のとおり、列の合計は$NaNです。もちろん、これは望ましくない結果です。パラメータを削除するgroupByと、列の合計は$471.80になります。groupByこの動作を修正する方法を知っている人はいますか? よろしくお願いします!

4

2 に答える 2