我什至不确定我是否可以实现所需的输出,但是我想问一问,因为我对这个问题非常执着。我正在构建一个有rHandsontableOutput对象的闪亮应用程序。当我更新表的第4列时,我希望它自动将表的5-16列乘以第4列中的新值。我很难将相乘的结果显示在表中。 rHandsontable对我来说有点棘手。我知道如何在表中显示数据,然后在另一个输出对象中使用它,但是我对如何在同一输出对象中使用它有些困惑。最好不必求助于文本输入来更新表或其他非表格式的解决方案。任何帮助或替代解决方案将不胜感激!
我引用了其他几篇尚未成功的文章。
show the sum of specific columns based on rhandsontable values
Update handsontable by editing table and/or eventReactive
Flexdashboard, rhandsontable: how to programmatically access user updated table?
我的代码如下:
#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)
})
我还尝试过按一下按钮来更新表,或者只创建一个可以编辑的向量并将其与新表绑定,但是我对这两种解决方案都没有运气。
答案 0 :(得分:0)
如果您的问题是增加列数,则可以尝试以下操作:
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
由reprex package(v0.2.1)于2019-05-05创建
您基本上可以使用函数dplyr::mutate_at
来引用要相乘的列。然后,我们使用匿名function(x)
将列a
乘以之前指定的列。