Я пытаюсь использовать bscols / crosstalk / DT в R для создания двух отдельных наборов данных sharedData для создания отдельных взаимодействий в файле уценки R.
Насколько я могу, Google, похоже,все настроено правильно, и я не получаю никаких сообщений об ошибках.Однако, когда у меня включен HTML и я нажимаю на фильтры, ничего не происходит, поэтому должно быть что-то не так ...
Кроме того, код ниже - я играл с размещением объектов, когда я понял,что фильтры не работают, так что да, действительно, они немного отличаются (если вы ОКР, как я!)
## shipper version ##
## set up data set ##
temp_shipper <- rate_lvl_ship %>%
subset(
select = c(
'OrigName',
'OrigCity',
'OrigState',
'RateCode',
'RateDesc',
'Score',
'Discrepancies',
'DiscPer',
'RateCat'
)
)
temp_shipper <- temp_shipper[order(-temp_shipper$Score),]
temp_shipper$DiscPer <- paste(
formatC(
temp_shipper$DiscPer*100,
digits = 2,
format = 'f'
) %>% as.character(),
'%'
)
temp_shipper$Discrepancies <- formatC(
temp_shipper$Discrepancies,
digits = 0,
big.mark = ','
)
temp_shipper$Score <- round(temp_shipper$Score,2)
## set up dataset as a shared dataset for filtering ##
sd_shipper <- SharedData$new(temp_shipper,group='data_subset')
## actual visual in dashboard ##
bscols(
widths = c(4,4,4),
device = 'lg',
list(
filter_select(
id = 'origname',
label = 'Origin Name',
sharedData = sd_shipper,
group = ~OrigName,
multiple = TRUE
),
filter_checkbox(
id = 'ratecat',
label = 'Rate Category',
sharedData = sd_shipper,
group = ~RateCat,
allLevels = TRUE,
inline = TRUE
)
),
list(
filter_select(
id = 'origcity',
label = 'Origin City',
sharedData = sd_shipper,
group = ~OrigCity,
multiple = TRUE
),
filter_select(
id = 'ratecode',
label = 'Rate Code',
sharedData = sd_shipper,
group = ~RateCode,
multiple = TRUE
)
),
list(
filter_select(
id = 'origstate',
label = 'Origin State',
sharedData = sd_shipper,
group = ~OrigState,
multiple = TRUE
),
filter_select(
id = 'ratedesc',
label = 'Rate Description',
sharedData = sd_shipper,
group = ~RateDesc,
multiple = TRUE
)
)
)
datatable(
sd_shipper,
caption = ' ',
rownames = FALSE,
colnames = c(
'Orig Name',
'Orig City',
'OST',
'Rate Code',
'Description',
'Score',
'Discrepancy Ct',
'%',
'RateCate'
),
options = list(
pageLength = 5,
columnDefs = list(
list(className = 'dt-center', targets = c(2:3,5:7)),
list(visible = FALSE, targets = 8)
),
lengthChange = FALSE,
searching = FALSE
)
) %>%
formatCurrency(
'Discrepancies',
currency = '',
interval = 3,
mark = ',',
digits = 0
)
## receiver version ##
## set up data set ##
temp_receiver <- rate_lvl_recr %>%
subset(
select = c(
'DestName',
'DestCity',
'DestState',
'RateCode',
'RateDesc',
'Score',
'Discrepancies',
'DiscPer',
'RateCat'
)
)
temp_receiver <- temp_receiver[order(-temp_receiver$Score),]
temp_receiver$DiscPer <- paste(
formatC(
temp_receiver$DiscPer*100,
digits = 2,
format = 'f'
) %>% as.character(),
'%'
)
temp_receiver$Discrepancies <- formatC(
temp_receiver$Discrepancies,
digits = 0,
big.mark = ','
)
temp_receiver$Score <- round(temp_receiver$Score,2)
## set up dataset as a shared dataset for filtering ##
sd_receiver <- SharedData$new(temp_receiver,group='data_subset1')
## actual visual in dashboard ##
bscols(
widths = c(3,9),
device = 'lg',
list(
filter_select(
id = 'destname',
label = 'Destination Name',
sharedData = sd_receiver,
group =~DestName,
multiple = TRUE
),
filter_select(
id = 'destcity',
label = 'Destination City',
sharedData = sd_receiver,
group =~DestCity,
multiple = TRUE
),
filter_select(
id = 'deststate',
label = 'Destination State',
sharedData = sd_receiver,
group =~DestState,
multiple = TRUE
),
filter_checkbox(
id = 'ratecat',
label = 'Rate Category',
sharedData = sd_receiver,
group =~RateCat,
allLevels = TRUE,
inline = FALSE
),
filter_select(
id = 'ratecode',
label = 'Rate Code',
sharedData = sd_receiver,
group =~RateCode,
multiple = TRUE
),
filter_select(
id = 'ratedesc',
label = 'Rate Description',
sharedData = sd_receiver,
group =~RateDesc,
multiple = TRUE
)
),
datatable(
sd_receiver,
caption = 'RECEIVERS',
rownames = FALSE,
colnames = c(
'Dest Name',
'Dest City',
'DST',
'Rate Code',
'Description',
'Score',
'Discrepancy Ct',
'%',
'RateCate'
),
options = list(
pageLength = 10,
lengthMenu = c(5,10,15,20),
columnDefs = list(
list(className = 'dt-center', targets = c(2:3,5:7)),
list(visible = FALSE, targets = 8)
),
lengthChange = FALSE,
searching = FALSE
)
) %>%
formatCurrency(
'Discrepancies',
currency = '',
interval = 3,
mark = ',',
digits = 0
)
)
Как я уже сказал, я не получаю никакой ошибкисообщения, фильтры просто не изменяют свои таблицы данных, как ожидалось.Эти фильтры фактически не фильтруют строки из наборов данных sharedData.то есть, когда я нажимаю флажок в фильтре категории тарифов filter_checkbox, я ожидаю, что «Отображение от 1 до 10 из 1000 записей» в таблице данных изменится на что-то вроде «Отображение от 1 до 10 из 900 записей», и это не так.