gpt4 book ai didi

r - Shiny :覆盖rhandsontable,赋值左侧无效(NULL)

转载 作者:行者123 更新时间:2023-12-02 03:38:23 24 4
gpt4 key购买 nike

在 Shiny 应用程序中,我想从本地读取一个表,将其显示为 rhandsontable,并使用 Sys.Date() 覆盖其中一列,并将更新后的表显示为 rhandsontable .

表格function_table看起来像这样。

     client    fun    agency    loading_site   last_update_on_DB
IKEA mean NA Paris 2018-08-01
Nestle sum NA Berlin 2018-08-02
Toyota mean NA Munich 2018-07-01
: : : : :

这是我的服务器。R

# read a table
func_path <- '/...[FILE PASS].../function_table.csv'
function_table <- reactive({read.csv(func_path, header = T, sep = ',', stringsAsFactors = F)})

# convert table to rhandsontable object to display in the app
hot_func <- reactive({function_table() %>%
rhandsontable(width = 1000, height = 1000) %>%
hot_cols(readOnly = T) %>%
hot_table(stretchH = "all" )})

# do some computations and overwrites the table
# ui.R has an action button (id = compute)
observeEvent({
input$compute
},{

# some computations...

# overwrite last_update_on_DB column with Sys.Date()
function_table()[function_table()$client == input$client,]$last_update_on_DB <- Sys.Date()
})

但是错误如下:

Reactives: invalid (NULL) left side of assignment

我也关注了this page如下所示,但出现另一个错误:

# read a table
values <- reactiveValues()
func_path <- '/...[FILE PASS].../function_table.csv'
values$function_table <- reactive({read.csv(func_path, header = T, sep = ',', stringsAsFactors = F)})

# convert table to rhandsontable object to display in the app
hot_func <- reactive({values$function_table() %>%
rhandsontable(width = 1000, height = 1000) %>%
hot_cols(readOnly = T) %>%
hot_table(stretchH = "all" )})

# do some computations and overwrites the table
# ui.R has an action button (id = compute)
observeEvent({
input$compute
},{

# some computations...

# overwrite last_update_on_DB column with Sys.Date()
values$function_table <- values$function_table()
values$function_table[values$function_table$client == input$client, ]$last_update_on_DB <- Sys.Date()
})


Warning: Error in eval: tentative d'appliquer un objet qui n'est pas une fonction
(it's telling me that in the line of hot_func, values$function_table() is not a function)

有什么解决办法吗?

最佳答案

专注于您的第一个示例:

您正在尝试为响应式对象分配一个值。 function_table是一个 react 性的,所以你只能获取它的值,而不能通过 function_table()[....] <- .... 设置它的值。 .

很难确切地知道如何解决这个问题,因为您还没有发布最小的可重现示例。

使用 react 值解决此问题的一种方法。这是一个可以在服务器内分配和更改的值。这是一个例子:

server = function(input, output, session){
current = reactiveValues()
current$rhandsontable = read.csv(....) # your own code here to load the file on start up

observeEvent(input$compute,{
tmp = isolate(current$rhandsontable)
tmp[tmp$client == input$client,]$last_update_on_DB <- Sys.Date()
current$rhandsontable <- tmp
}
}

使用isolate(...)可能是不必要的。它用于防止在检索其内容时重新评估 react 值。

此示例假设您正在服务器的开头加载一个固定/已知的文件。如果您动态加载文件,您可能需要使用观察器来设置当前值。例如(伪代码):

current = reactiveValues()
current$rhandsontable = NULL

observe(file_name,current$rhandsontable = read.csv(file_name))

关于r - Shiny :覆盖rhandsontable,赋值左侧无效(NULL),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51893439/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com