Rhandsontable在闪亮的
编辑:我在server.R中包含了observeEvent(),如本视频中所述: . 它部分起作用。当我更新A和B时,图形会被更新,但是C、D和E列给出了错误的值,并且行数不断增加。感谢您的帮助 我有两列A和B。用户可以选择将值拖放到A和B中,因此我使用的是rhandsontable(来源:) 下面是ui.R和server.R的代码。 该应用程序基本上有一个可编辑的表格和一个ggplotly输出。根据我在A列和B列中输入的内容,C列、D列和E列应该根据我在server.R中包含的一些公式自动更新。当我运行此代码时,图形和列不会更新。我该怎么办 用户界面 服务器.RRhandsontable在闪亮的,r,shiny,data-visualization,rhandsontable,R,Shiny,Data Visualization,Rhandsontable,编辑:我在server.R中包含了observeEvent(),如本视频中所述: . 它部分起作用。当我更新A和B时,图形会被更新,但是C、D和E列给出了错误的值,并且行数不断增加。感谢您的帮助 我有两列A和B。用户可以选择将值拖放到A和B中,因此我使用的是rhandsontable(来源:) 下面是ui.R和server.R的代码。 该应用程序基本上有一个可编辑的表格和一个ggplotly输出。根据我在A列和B列中输入的内容,C列、D列和E列应该根据我在server.R中包含的一些公式自动更
shinyServer(function(input, output, session) {
df<- data.frame(A=c(9,15,25,35,40,45,50,55,60,65,75,85,95,105,120,125),
B=c(0.5,1.5,3,8,16,23,30,36,43,58,64,78,92,98,99,100))
for(i in 2:(nrow(df)))
{
df[i,3]<-df[i-1,1]+(df[i,1]-df[i-1,1])/2
df[i,4]<-(df[i,2]-df[i-1,2])
df[i,5]<- scientific(df[i,4]/df[i,3]/100,digits=3)
}
datavalues<-reactiveValues(data=df)
output$table <- renderRHandsontable({
mytab <- rhandsontable(datavalues$data, colHeaders=TRUE, rowHeaders=TRUE)
return(mytab)
})
observeEvent(
input$table$changes$changes,
{
xi= input$table$changes$changes[[1]][[1]]
datavalues$data<-hot_to_r(input$table)
for(i in 2:(nrow(df)))
{
datavalues$data[xi+i,3]<-datavalues$data[i-1,1]+(datavalues$data[i,1]-datavalues$data[i-1,1])/2
datavalues$data[xi+i,4]<-(datavalues$data[i,2]-datavalues$data[i-1,2])
datavalues$data[xi+i,5]<- scientific(datavalues$data[i,4]/datavalues$data[i,3]/100,digits=3)
}
}
)
output$plot<-renderPlotly({
plt<-
ggplot(datavalues$data,aes(A,B))+
geom_point()+
geom_line()+
xlab("A")+
ylab("B")
p<-config(ggplotly(plt),mathjax = 'cdn')
p
})
shinyServer(功能(输入、输出、会话){
dfI怀疑大部分问题都存在于observeEvent
中的for
循环中。您能否进一步解释一下预期行为是什么?当您更改或编辑列a或B的特定行中的值时,是否希望C、D、E列仅在同一行中更新?您能否详细描述一下为什么要使用for
loop?由于循环增加到nrow(df)
,并且您在行索引中添加了xi
,因此为第3-5列添加额外的行是有意义的……您好,非常感谢您捕捉到它,正如您提到的,问题出在observeEvent内部。xi=input$table$changes$changes[[1][[1]]不需要。有几个其他问题。1.如何使列C、D和E为只读?2.我想将列名更改为latex形式。我正在尝试使用latex2exp包,不确定在何处包含它3.当我将鼠标悬停在数据点上时,我想获得类似(a、b)的内容,而不是datavalues$data[,3]:datavalues$data[,4]:b您可能想编辑您的问题或提交一个新问题以涵盖所有内容,但我将在此处提供更多内容。列C、D和E基本上是只读的,因为如果以任何方式更改,您当前会覆盖这些值。但要将其灰显并设为“只读”,您可以添加%%>%hot\u col(col=3:5,readOnly=TRUE)
在您的rhandsontable
语句之后。我对latex2exp
软件包不太熟悉,但会四处寻找帮助,或发布新问题。最后,悬停的标签可能来自列名。在我运行的版本中,它在两行上显示a:55 B:36
。要重现您的内容,我需要t可能有助于更新您发布的问题。希望这会有所帮助。谢谢!我发布了另一个问题并链接了此问题-我怀疑大部分问题都存在于observeEvent
中的for
循环中。您能解释一下预期行为是什么吗?当您更改编辑特定行中的值时对于A列或B列,是否希望C列、D列、E列仅在同一行中更新?能否详细描述一下为什么有for
循环?因为循环增加到nrow(df)
然后在行索引中添加xi
在第3-5列中添加额外的行是有意义的…您好,非常感谢您捕获它,正如您提到的,问题出在observeEvent内部。xi=input$table$changes$changes[[1][[1]]不需要。有几个其他问题。1.如何使列C、D和E为只读?2.我想将列名更改为latex形式。我正在尝试使用latex2exp包,不确定在何处包含它3.当我将鼠标悬停在数据点上时,我想获得类似(a、b)的内容,而不是datavalues$data[,3]:datavalues$data[,4]:b您可能想编辑您的问题或提交一个新问题以涵盖所有内容,但我将在此处提供更多内容。列C、D和E基本上是只读的,因为如果以任何方式更改,您当前会覆盖这些值。但要将其灰显并设为“只读”,您可以添加%%>%hot\u col(col=3:5,readOnly=TRUE)
在您的rhandsontable
语句之后。我对latex2exp
软件包不太熟悉,但会四处寻找帮助,或发布新问题。最后,悬停的标签可能来自列名。在我运行的版本中,它在两行上显示a:55 B:36
。要重现您的内容,我需要t可能有助于更新您发布的问题。希望这对您有所帮助。谢谢!我发布了另一个问题并链接了此问题-
shinyServer(function(input, output, session) {
df<- data.frame(A=c(9,15,25,35,40,45,50,55,60,65,75,85,95,105,120,125),
B=c(0.5,1.5,3,8,16,23,30,36,43,58,64,78,92,98,99,100))
for(i in 2:(nrow(df)))
{
df[i,3]<-df[i-1,1]+(df[i,1]-df[i-1,1])/2
df[i,4]<-(df[i,2]-df[i-1,2])
df[i,5]<- scientific(df[i,4]/df[i,3]/100,digits=3)
}
datavalues<-reactiveValues(data=df)
output$table <- renderRHandsontable({
mytab <- rhandsontable(datavalues$data, colHeaders=TRUE, rowHeaders=TRUE)
return(mytab)
})
observeEvent(
input$table$changes$changes,
{
xi= input$table$changes$changes[[1]][[1]]
datavalues$data<-hot_to_r(input$table)
for(i in 2:(nrow(df)))
{
datavalues$data[xi+i,3]<-datavalues$data[i-1,1]+(datavalues$data[i,1]-datavalues$data[i-1,1])/2
datavalues$data[xi+i,4]<-(datavalues$data[i,2]-datavalues$data[i-1,2])
datavalues$data[xi+i,5]<- scientific(datavalues$data[i,4]/datavalues$data[i,3]/100,digits=3)
}
}
)
output$plot<-renderPlotly({
plt<-
ggplot(datavalues$data,aes(A,B))+
geom_point()+
geom_line()+
xlab("A")+
ylab("B")
p<-config(ggplotly(plt),mathjax = 'cdn')
p
})