mysql - Shiny 的 RadioButton 选择值未正确存储在 MySQL 数据库中
问题描述
我正在 Shiny 中开发一个问卷,它使用 RadioButtons 收集一些用户数据,并根据用户选择的值生成可视化。
我正在尝试将我的单选按钮的选择值存储在 Amazon AWS 上托管的 MySQL 数据库中。我已按照 Dean Attali 的文章使其工作。
一切正常,除了我的单选按钮中的选择值没有正确插入数据库中。我正在尝试将所有这些值作为“TEXT”类型存储在 MySQL 数据库中。
以下是我正在使用的代码。
假设我有一个ui.R
我定义 3 的地方,radioButtons
称为dt_ds_q1
,dt_ds_q2
和dt_ds_q3
。根据用户的选择,这些radioButtons
提供0
或的值1
。
以下是server.R
我在数据库中用于 INSERTING 的片段:
# Define the fields that need to be saved.
fields <- c("dt_ds_q1", "dt_ds_q2", "dt_ds_q3")
# Function for Saving Data on MySQL.
saveDataMySQL <- function(data, unique_id, session_id) {
# Connect to the database
db <- dbConnect(MySQL(),
dbname = databaseName,
host = options()$mysql$host,
port = options()$mysql$port,
user = options()$mysql$user,
password = options()$mysql$password)
# Concatenating UniqueID, SessionID, and Timestamp
data <- as.data.frame(t(data))
dt <- data %>% add_column(unique_id = unique_id,
session_id = session_id,
timestamp = Sys.time())
# Construct the update query by looping over the data fields
query <- sprintf(
"INSERT INTO %s (%s) VALUES ('%s')",
table,
paste(names(dt), collapse = ", "),
paste(dt, collapse = "', '")
)
# Submit the update query and disconnect
dbGetQuery(db, query)
dbDisconnect(db)
}
shinyServer(function(input, output) {
# Get form data from questionnaire
formData <- reactive({
data <- sapply(fields, function(x) input[[x]])
data
})
# Save data when someone clicks on the navbar title.
observeEvent({
input$ati == "NAVBARNAME"
},
saveDataMySQL(formData(), unique.id(), session.id()))
})
我得到的输出如下图所示。
但是,所需输入的值应为 1 或 0。
预先感谢您的任何帮助。
解决方案
我解决了这个问题。我不必要地将列表转换formData()
为data.frame
函数定义中的saveDataMySQL()
。以下是更新的代码片段,它解决了我的问题(在saveDataMySQL()
方法的定义中:
# Adding unique ID, session ID and timestamp to list
data <- c(data, unique_id, session_id, Sys.time())
# Construct the update query by looping over the data fields
query <- sprintf(
"INSERT INTO %s (%s) VALUES ('%s')",
table,
paste(fields_all, collapse = ", "),
paste(dt, collapse = "', '")
)
其中,fields_all
是列名列表,我将其明确定义为:
fields_all = c("dt_ds_q1", "dt_ds_q2", "dt_ds_q3", "unique_id", "session_id", "timestamp")
推荐阅读
- python - Python - 从子字符串列表中搜索列表中的子字符串
- ansible - Ansible 更新 yum 人性化输出
- c# - 比较坐标时无法从 int 转换为 System.Drawing.Point
- java - Swing 分层 - 透明组件忽略底层 AWT 元素
- php - PHP中POST Sanitation和Prepared语句之间的区别
- scala - Scala Left Join 返回 Full Join 的结果
- angular - forkJoin 上的 takeUntil 是否会调用 forkJoined observables 上的函数?
- vuepress - 只有我通过纱线尝试时,Vuepress 开发服务器无法正常工作
- javascript - 如何使用 Jquery 获取添加的输入字段的值?
- python - 如何从 Python 发送 AMP 电子邮件?它在技术上与普通电子邮件有何不同