#r #shiny #data-storage
Вопрос:
Я не получаю правильный ввод в свой текстовый файл. Я получаю только нулевые значения в каждом столбце текстового файла, в который я его записываю. Например, имя фермы = NULL.
Кто-нибудь знает, почему я получаю эти нулевые значения и, возможно, как это решить? Я думаю, что он переписывает его неправильно.
Это мой сценарий:
Library (shiny)
library(png)
library(shinyTime)
# Define the fields we want to save from the form
fields <- c("Farm name", 'Date data entry', "Feed intake", "Water intake", "Time light on", "Time light off", "Feed phase", "Eggs per week")
# Save a response
# ---- This is one of the two functions we will change for every storage type ----
saveData <- function(data) {
data <- t(data)
# Create a unique file name
Interovodatafromwebapp <- sprintf("%s_%s.csv", as.integer(Sys.time()), digest::digest(data))
# Write the file to the local system
write.table(data, file="myfile.txt", append=T, quote = T, sep=",", row.names=F, col.names=T)
}
# Load all previous responses
# ---- This is one of the two functions we will change for every storage type ----
outputDir <- "responses"
loadData <- function() {
# Read all the files into a list
files <- list.files(outputDir, full.names = TRUE)
data <- lapply(read.table(file = "myfile.txt", header = TRUE, sep = '.', fill = TRUE))
# Concatenate all data together into one data.frame
data <- do.call(rbind, data)
data
}
# Shiny app with 3 fields that the user can submit data for
shinyApp(
ui = fluidPage(
titlePanel("Interovo Egg Data Entry For Farmers"),
sidebarPanel(
DT::dataTableOutput("responses", width = 10), tags$hr(),
textInput('Farm_name', 'Farm name'),
dateInput('Date_data entry', 'Date data entry'),
numericInput("Feed_intake", 'Feed intake', 0),
numericInput("Water_intake", 'Water intake', 0),
timeInput("Time_light_on", "Time light on", seconds = FALSE),
timeInput("Time_light_off", "Time light off", seconds = FALSE),
textInput("Feed_phase", 'Feed phase'),
numericInput("Eggs_per_week", 'Eggs per week', 0),
actionButton("submit", "Submit")),
mainPanel(
img(src = "Logointerovogroot.png", height = 62, width = 160),
img(src = "WURfoto.png", height = 210, width = 280)),
),
server = function(input, output, session) {
# Whenever a field is filled, aggregate all form data
formData <- reactive({
data <- sapply(fields, function(x) input[[x]])
data
})
# When the Submit button is clicked, save the form data
observeEvent(input$submit, {
saveData(formData())
})
# Show the previous responses
# (update with current response when Submit is clicked)
#output$responses <- DT::renderDataTable({
#input$submit
#loadData()
#})
}
)
Заранее спасибо!
Дамиан