Rshiny renderRHandsontable, как обновить таблицу на основе значений в одном столбце таблицы - PullRequest
0 голосов
/ 03 мая 2019

Я даже не уверен, возможен ли желаемый результат, но хотел спросить, если это так, потому что я очень застрял в этой проблеме. Я создаю блестящее приложение, в котором у меня есть объект rHandsontableOutput. Когда я обновляю 4-й столбец таблицы, я хочу, чтобы он автоматически умножил 5-16 столбцов таблицы на новые значения в 4-м столбце. У меня возникают проблемы с отображением моих умноженных результатов в моей таблице. rHandsontable было немного сложно понять. Я знаю, как отобразить данные в таблице, а затем использовать их в другом выходном объекте, но я немного запутался, как использовать его в том же выходном объекте. Было бы предпочтительнее не прибегать к вводу текста, чтобы затем обновить таблицу или какой-либо другой тип решения, который не имеет табличного формата. Любая помощь или альтернативное решение будет высоко ценится!

Я ссылался на несколько других сообщений, но безуспешно.

показывает сумму конкретных столбцов на основе случайных значений

Обновление handstatable путем редактирования таблицы и / или событияReactive

Flexdashboard, rhandsontable: как программно получить доступ к пользовательской обновленной таблице?

Мой код выглядит следующим образом:

#ui

... fluidRow(
              column(width=8,
                     box(
                       width = NULL, div(rHandsontableOutput('contents'), style = "font-size: 92%"),title = "Potential View",
                       status = "primary", solidHeader = TRUE)
                     # img(height = "500px", alt="SNAP Logo", src="overlay.png"))

              )


            )...

#server
indat <- reactiveValues(data=table_1)

observe({
  if(!is.null(input$contents))
    indat$data <- hot_to_r(input$contents)

})


output$contents <- renderRHandsontable({

  tbl <- rhandsontable(indat$data) %>% hot_col(col = c(1,2,3), readOnly = TRUE) 

  c=as.vector(tbl$col_4)
  tbl_new = tbl[,c(5:16)]
  test= data.frame(mapply(`*`,tbl_new,c))

  return(test)

})

Я также пытался обновить таблицу нажатием кнопки или создать только один вектор, который можно редактировать, и связать его с новой таблицей, но мне пока не повезло с любым из этих решений.

1 Ответ

0 голосов
/ 05 мая 2019

Если ваша проблема заключается в умножении столбцов, вы можете попробовать следующее:

library(dplyr)
#> 
#> Attaching package: 'dplyr'
#> The following objects are masked from 'package:stats':
#> 
#>     filter, lag
#> The following objects are masked from 'package:base':
#> 
#>     intersect, setdiff, setequal, union

df <- tibble(
  a = 1:10,
  b = 11:20,
  c = 21:30,
  d = 31:40
)

df
#> # A tibble: 10 x 4
#>        a     b     c     d
#>    <int> <int> <int> <int>
#>  1     1    11    21    31
#>  2     2    12    22    32
#>  3     3    13    23    33
#>  4     4    14    24    34
#>  5     5    15    25    35
#>  6     6    16    26    36
#>  7     7    17    27    37
#>  8     8    18    28    38
#>  9     9    19    29    39
#> 10    10    20    30    40

df %>% 
  mutate_at(2:4, function(x) x * .$a)
#> # A tibble: 10 x 4
#>        a     b     c     d
#>    <int> <int> <int> <int>
#>  1     1    11    21    31
#>  2     2    24    44    64
#>  3     3    39    69    99
#>  4     4    56    96   136
#>  5     5    75   125   175
#>  6     6    96   156   216
#>  7     7   119   189   259
#>  8     8   144   224   304
#>  9     9   171   261   351
#> 10    10   200   300   400

Создано в 2019-05-05 пакетом представлением (v0.2.1)

Вы в основном используете функцию dplyr::mutate_at для ссылки на столбцы, которые вы хотите умножить.Затем мы используем анонимный function(x) для умножения столбца a на столбцы, указанные ранее.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...