gpt4 book ai didi

R Shiny 错误: Cannot coerce type 'closure' to vector of type 'double'

转载 作者:行者123 更新时间:2023-12-04 07:38:41 25 4
gpt4 key购买 nike

我想输入一个数字向量作为输入,然后简单地绘制直方图。这是我的R代码:

ui.R:

library(shiny)

shinyUI(pageWithSidebar(

headerPanel("Hello Shiny!"),

sidebarPanel(selectInput("Vector", "Select Numbers", c(1,2,3,4), selected = NULL, multiple = TRUE)),

mainPanel( plotOutput("plotVector"))
))

Server.R:
library(shiny)
shinyServer(function(input, output) {

v<- function()
{
v <- rnorm(input$Vector)#take vector as input
}

output$plotVector <- renderPlot({ hist(as.numeric(v))})

})

运行该应用程序的代码:
library(shiny)
runApp("C:/Users/me/Desktop/R Projects/testShiny")

运行此命令时,出现错误“无法将类型'closure'强制转换为类型'double'的向量”

你能帮我吗?谢谢你。

最佳答案

在服务器端,将v定义为一个函数:

v<- function()
{
v <- rnorm(input$Vector)#take vector as input
}

然后尝试将其用作 as.numeric(...)的参数:
output$plotVector <- renderPlot({  hist(as.numeric(v))}) 

所以R试图将class:function转换为double。

编辑:回答OP的后续问题。对于ui.R和server.R,具有以下内容:

在服务器端, shinyUI(...)带有两个自动传递的对象: inputoutput。通过创建各种GUI对象,在ui.R中定义 input(R术语中的“列”)的属性。因此,您将创建一个 select对象,并调用 selectInput(...)。对象的ID为 "Vector"。在服务器端将此称为: input$Vector。请注意,您所调用的 Vector实际上是一个数字:无论用户在选择框中选择的是什么。绘制单个数字的直方图是没有意义的,因此我更改了代码,使input $ Vector成为正态分布的均值。您还遇到了问题:在代码中将input $ Vector初始化为NULL,这将引发错误。所以我将其更改为初始化为0。

该声明:
output$mainplot <- ...

在服务器端,在 output$main_plot中填充对象 ui.R,该对象由以下语句定义:
... plotOutput("main_plot")...

汇总以下内容:

ui.R:
library(shiny)
shinyUI(pageWithSidebar(
headerPanel("Hello Shiny!"),
sidebarPanel(selectInput("Vector", "Select Mean of Distribution", c(0,1,2,3,4), selected = 0, multiple = TRUE)),
mainPanel( plotOutput("main_plot"))
))

服务器。R:
library(shiny)
shinyServer(function(input, output) {
v<- function() {
return(rnorm(100,mean=as.numeric(input$Vector)))
}
output$main_plot <-
renderPlot(
hist(v(), breaks=10, xlab="",
main="Histogram of 100 Samples\n taken from: N[mean, sd=1]"))
})

生成此:

关于R Shiny 错误: Cannot coerce type 'closure' to vector of type 'double' ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20430171/

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