我是Shiny的新用户,正在尝试在 Jmeter 板中构建一个应用程序,它可以做三件事。
1.接受应用程序用户的csv数据文件-这似乎工作正常,因为我在应用程序中收到一条消息,“上传完成”
1.使用MIRT包基于数据文件生成绘图输出
1.使用mirt包基于数据文件生成表输出。
当我上传一个csv数据文件时,我在图和表的输出中得到以下错误:
错误:参数的长度为零
任何帮助将不胜感激!
下面是我的代码:
ui <- fluidPage(
titlePanel(p("Let's Analyze with IRT!", style = "color:teal")),
sidebarLayout(
sidebarPanel(
h3("Upload Your Data"),
h5(em("Remember your data should be a matrix with dichotomous responses of 0 or 1 stored in a .csv file")),
fileInput(inputId = "filedata",
label = "Choose csv file",
accept = c(".csv")),
p("Made with", a("Shiny",
href = "http://shiny.rstudio.com")),
img(src = base64enc::dataURI(file = xxx,
mime = "image/png"))),
mainPanel("ICC Plot and Item Parameter Table",
tableOutput("irtPT")
)
)
)
server <- function(input, output){
mydata <- reactive({
req(input$filedata)
read.csv(input$filedata$datapath, header = FALSE)
})
output$irtPT <- renderTable({
unimodel <- mirt.model("latent = ")
modT2 <- mirt::mirt(data = mydata,
model = unimodel,
itemtype = "Rasch",
SE = TRUE)
coef.rasch3 <- coef(modT2, IRTpars=TRUE, simplify=TRUE)
items.rasch3 <- as.data.frame(coef.rasch3$items)
IR3e <- items.rasch3 %>% select(-c("g", "u"))
colnames(IR3e)[1] <- "Item Discrimination Parameter"
colnames(IR3e)[2] <- "Item Location Parameter"
print(IR3e)
}, rownames = TRUE)
}
shinyApp(ui = ui, server = server)
1条答案
按热度按时间f4t66c6m1#
欢迎来到Stack Overflow。感谢您包含您的代码,但请注意,为了让人们尽可能容易地帮助您,您应该使您的代码尽可能小,并确保它可以在其他人的计算机上工作(可能没有您的文件等)。这可能需要一些练习:)在这种情况下,您的代码立即对我来说崩溃了,因为您有一个
img()
,我的计算机上没有,所以最好完全忽略它。请参阅下面的示例,并注意库调用第一:为了回答你的问题,你上传的CSV数据是一个React对象,所以你需要像函数一样调用它。阅读这里了解更多细节:https://shiny.rstudio.com/articles/understanding-reactivity.html
要修复代码,您需要做的就是在
mirt()
函数中将mydata
更改为mydata()
。例如,您的服务器函数如下所示: