关于Shiny:
我想要几个人类编码器对100种不同的文本进行评分。 在每个页面上应该只有一个简单的下拉菜单,其中包含可用的评分。 我可以用一个简单的"提交"来实现这个单页/文本。按钮和答案保存在单个csv文件中。
但现在我想对所有100个文本进行概括 - 以便每个页面都显示一个新文本(我会将其作为for循环实现?)并希望将所有100个答案保存在一个.csv-中文件。
我是Shiny的新手(但在R中并不是那么糟糕),但找不到同时提供这两种功能的功能 - 多个页面和多个保存的输入。
我的当前代码对于单个页面看起来像这样(主要受https://deanattali.com/2015/06/14/mimicking-google-form-shiny启发):
humanTime <- function() format(Sys.time(), "%Y%m%d-%H%M%OS")
fieldsMandatory <- c("new_info", "agreement", "rating")
fieldsAll <- c("new_info", "agreement", "rating")
responsesDir <- file.path("responses")
epochTime <- function() {
as.integer(Sys.time())
}
shinyApp(
ui = fluidPage(
shinyjs::useShinyjs(),
titlePanel("Kommentarbewertungen Spiegel Online - Pre-Test"),
mainPanel("This is the main panel"),
br(),
code(text[1]),
br(),
div(
id = "form", align="center",
selectInput("new_info", "Bringt der Kommentar neue Informationen ein?",
c("","0 - nein", "1 - ja", "2 - unentschlossen")),
selectInput("agreement", "Stimmen Sie dem Kommentar zu?",
c("","0 - nein", "1 - ja", "2 - unentschlossen")),
selectInput("rating", "Bewerten Sie die Qualitaet des Kommentars auf einer Skala von 1 bis 5",
c("","1 - sehr schlecht", "2 - schlecht", "3 - mittel", "4 - gut", "5 - sehr gut")),
actionButton("submit", "Submit", class = "btn-primary")
),
br(),
actionButton("prevBtn", "< Previous"),
actionButton("nextBtn", "Next >")
),
server = function(input, output, session) {
observe({
# check if all mandatory fields have a value
mandatoryFilled <-
vapply(fieldsMandatory,
function(x) {
!is.null(input[[x]]) && input[[x]] != ""
},
logical(1))
mandatoryFilled <- all(mandatoryFilled)
# enable/disable the submit button
shinyjs::toggleState(id = "submit", condition = mandatoryFilled)
})
formData <- reactive({
data <- sapply(fieldsAll, function(x) input[[x]])
data <- c(data, timestamp = epochTime())
data <- t(data)
data
})
saveData <- function(data) {
fileName <- sprintf("%s_%s.csv",
humanTime(),
digest::digest(data))
write.csv(x = data, file = file.path(responsesDir, fileName),
row.names = FALSE, quote = TRUE)
}
# action to take when submit button is pressed
observeEvent(input$submit, {
saveData(formData())
})
}
)
非常感谢。
答案 0 :(得分:0)
我会将提交按钮用作活动。正如您在按下此按钮时说的那样,用户的输入被保存到csv文件中,为什么不继续添加相同的csv?
observeEvent(input$SubmitButton, {
Test<-c(input$rating, input$blah, input$blah)
write.table(Test, "Test.csv", row.names=F, sep=",",col.names=F,append=T)
#code to advance to next text
}
用户按下提交后,自动将闪亮提升到下一页,当用户再次输入时,按下提交,csv将自动打开并添加新输入。只要文本出现的顺序是一致的,您应该将所有答案保存在一个csv中。
注意:我使用.csv的写表,所以我可以在excel中轻松打开。 (我希望这有帮助)