以下のスクリプトでは、ShinyがPostgresSQLのデータをリアクティブ関数としてフェッチしています。そのリアクティブ関数の出力を操作したいのです私たちはデータフレームで行います)、私はそれをrenderPlot関数に渡して、私が望む出力を得ることができます。Shinyのリアクティブ関数からデータを取得して同じDFに新しい列を作成する方法
私はこの作業をどのように行うかを教えてくれて本当に助けになります。リアクション機能の処理時にエラーが発生していると考えてエラーメッセージを表示していません。
ありがとうございました!高く評価。
#server side operation
library(shiny)
library(dplyr)
library(ggplot2)
library(DBI)
library(RPostgreSQL)
drv <- dbDriver("PostgreSQL")
con <-dbConnect(drv,dbname = "", host = "valid credentials", port = 5439,
user = "USER", password = "password")
dates <- seq(as.Date(as.character(Sys.Date() - 33)), as.Date(as.character(Sys.Date() - 1)), by = 1)
shinyServer(function(input, output, session) {
generate <- function(dates){
listofdfs <- list() #Create a list in which you intend to save your df's.
for (i in 1:length(dates)){
data <- reactive({dbGetQuery(con, sprintf("select Column A, CAST (date AS date), id from My_Table
where id =", input$user_id," and
date <= '%s' and date >= '%s'- INTERVAL '7 days'", dates[i], dates[i]))
data$Column_A_mean <- mean(data[,1]) #creating a new column like we do in a data frame (DF)
})
listofdfs[[i]] <- data() # save your dataframes into the list
}
return(listofdfs) #Return the list of dataframes.
}
df <- do.call("rbind", generate(dates))
output$Coolplot <- renderPlot({
ggplot(data = df, aes(date)) +
geom_line(aes(y = Column A, colour = "Column A"))+
geom_line(aes(y = Column_A_mean, colour = "Column_A_mean"))
})
})
、むしろループを置きます反応性である。 – HubertL
こんにちは@HubertL ...もう一度お返事ありがとうございます....私はなぜ私はループの中にリアクティブ関数を置く必要がありますまた、私はdfにリアクティブ関数から返された別の列を追加することができます教えてください....ありがとう –