需要指导来创造价值盒子输出
Need guidance to create value box output
我正在使用从 Dean Attali blog 引用的本地持久数据创建一个闪亮的应用程序,如部分:1. 本地文件系统(本地)。
我的问题是,是否可以从此方法创建值框输出?
聚合来自输入的数据
formData <- reactive({
formdata <- c("Associate Name" = input$aname,"Associate Email"=input$aemail,"Client Name" = input$cname,
"Client Email"=input$cemail,"Ask By Customer"=input$ask,"Remarks"=input$rem ,
"Date" = as.character(input$date), "Followup Date" = as.character(input$fdate))
formdata <- t(formdata)
formdata
})
将数据保存到 csv(这会在我们每次提交时创建一个单独的文件)
saveData <- function(formdata) {
fileName <- sprintf("%s_%s.csv",
humanTime(),
digest::digest(formdata))
write.csv(x = formdata, file = file.path(responsesDir, fileName),
row.names = FALSE, quote = TRUE)
}
加载数据(绑定所有包含响应的 csv)
Data <- reactive( {
# Read all the files into a list
files <- list.files(responsesDir, full.names = TRUE)
data <- lapply(files, read.csv, stringsAsFactors = FALSE)
# Concatenate all data together into one data.frame
data <- do.call(rbind, data)
data <- data.frame(data)
data
}
正在 table
中显示数据
output$responses <- DT::renderDataTable({
input$submit
Data()
})
我想知道我们是否可以创建 valueBoxOutput 来显示同事姓名的记录次数、客户姓名的记录次数
例如:一些客户 - 10,一些助理 - 5
这是我的第一个闪亮的应用程序,请帮助我解决这个问题。
提前致谢!!
是的,你可以做到。首先,您需要使使用 loadData
读取的数据成为反应式的,而不是函数。然后在 output$responses
而不是 loadData
中引用此反应。
然后,创建另一个反应式,例如,associateClientText
,它从您在上面创建的反应式数据中提取要在框中显示的信息。
最后,参考associateClientText
定义你的值框。
在下面的评论中回答您的问题:这是一个简单的独立示例,展示了如何读取多个 csv 文件并将它们绑定到一个 dataframe/tibble.
library(tidyverse)
# Create some dummy data and write to CSV files
data1 <- tibble(x=rnorm(5), y=rnorm(5))
data2 <- tibble(x=rnorm(5), y=rnorm(5))
write.csv(data1, "data1.csv", row.names=FALSE)
write.csv(data2, "data2.csv", row.names=FALSE)
# Read in test data and combine in a single tibble
allData <- bind_rows(lapply(c("data1.csv", "data2.csv"), function(fName) read.csv(fName) %>% add_column(sourceFile=fName)))
allData
给予
x y sourceFile
1 0.1663704 -1.53566430 data1.csv
2 1.2903028 0.92808401 data1.csv
3 -0.7523470 -0.54466037 data1.csv
4 0.1036518 0.31038474 data1.csv
5 1.7568151 0.24742720 data1.csv
6 -1.3975505 -0.04481848 data2.csv
7 -0.2800692 -0.67718383 data2.csv
8 -0.8773866 0.18190370 data2.csv
9 -0.9915960 -3.16427113 data2.csv
10 0.6501058 -0.79753204 data2.csv
我不能给你更直接的帮助,因为你没有提供你自己的简单、独立的例子。 This post 可能会有帮助。
您可以将我的 bind_rows
代码复制到您的反应式中。就我个人而言,我将反应式重命名为 loadData
不再是对它正在做的事情的准确描述:它不是 加载 数据,它 是 数据。
我想出了怎么做。诀窍在于我们如何使用反应函数。
output$billing <- renderValueBox({
valueBox(value = length(Data()$Billing[Data()$Billing =="Yes"]),
subtitle = "No. of RFP's billed", color = "green",icon=icon("money",lib = "font-awesome"))
})
我正在使用从 Dean Attali blog 引用的本地持久数据创建一个闪亮的应用程序,如部分:1. 本地文件系统(本地)。
我的问题是,是否可以从此方法创建值框输出?
聚合来自输入的数据
formData <- reactive({
formdata <- c("Associate Name" = input$aname,"Associate Email"=input$aemail,"Client Name" = input$cname,
"Client Email"=input$cemail,"Ask By Customer"=input$ask,"Remarks"=input$rem ,
"Date" = as.character(input$date), "Followup Date" = as.character(input$fdate))
formdata <- t(formdata)
formdata
})
将数据保存到 csv(这会在我们每次提交时创建一个单独的文件)
saveData <- function(formdata) {
fileName <- sprintf("%s_%s.csv",
humanTime(),
digest::digest(formdata))
write.csv(x = formdata, file = file.path(responsesDir, fileName),
row.names = FALSE, quote = TRUE)
}
加载数据(绑定所有包含响应的 csv)
Data <- reactive( {
# Read all the files into a list
files <- list.files(responsesDir, full.names = TRUE)
data <- lapply(files, read.csv, stringsAsFactors = FALSE)
# Concatenate all data together into one data.frame
data <- do.call(rbind, data)
data <- data.frame(data)
data
}
正在 table
中显示数据output$responses <- DT::renderDataTable({
input$submit
Data()
})
我想知道我们是否可以创建 valueBoxOutput 来显示同事姓名的记录次数、客户姓名的记录次数
例如:一些客户 - 10,一些助理 - 5
这是我的第一个闪亮的应用程序,请帮助我解决这个问题。 提前致谢!!
是的,你可以做到。首先,您需要使使用 loadData
读取的数据成为反应式的,而不是函数。然后在 output$responses
而不是 loadData
中引用此反应。
然后,创建另一个反应式,例如,associateClientText
,它从您在上面创建的反应式数据中提取要在框中显示的信息。
最后,参考associateClientText
定义你的值框。
在下面的评论中回答您的问题:这是一个简单的独立示例,展示了如何读取多个 csv 文件并将它们绑定到一个 dataframe/tibble.
library(tidyverse)
# Create some dummy data and write to CSV files
data1 <- tibble(x=rnorm(5), y=rnorm(5))
data2 <- tibble(x=rnorm(5), y=rnorm(5))
write.csv(data1, "data1.csv", row.names=FALSE)
write.csv(data2, "data2.csv", row.names=FALSE)
# Read in test data and combine in a single tibble
allData <- bind_rows(lapply(c("data1.csv", "data2.csv"), function(fName) read.csv(fName) %>% add_column(sourceFile=fName)))
allData
给予
x y sourceFile
1 0.1663704 -1.53566430 data1.csv
2 1.2903028 0.92808401 data1.csv
3 -0.7523470 -0.54466037 data1.csv
4 0.1036518 0.31038474 data1.csv
5 1.7568151 0.24742720 data1.csv
6 -1.3975505 -0.04481848 data2.csv
7 -0.2800692 -0.67718383 data2.csv
8 -0.8773866 0.18190370 data2.csv
9 -0.9915960 -3.16427113 data2.csv
10 0.6501058 -0.79753204 data2.csv
我不能给你更直接的帮助,因为你没有提供你自己的简单、独立的例子。 This post 可能会有帮助。
您可以将我的 bind_rows
代码复制到您的反应式中。就我个人而言,我将反应式重命名为 loadData
不再是对它正在做的事情的准确描述:它不是 加载 数据,它 是 数据。
我想出了怎么做。诀窍在于我们如何使用反应函数。
output$billing <- renderValueBox({
valueBox(value = length(Data()$Billing[Data()$Billing =="Yes"]),
subtitle = "No. of RFP's billed", color = "green",icon=icon("money",lib = "font-awesome"))
})