的用户输入值列因此,例如,我的数据集是产品与闪亮
col1<-rep(c("a","b","c","d"),3)
col2<-rep(c(1:4),3)
col3<-rep(c("l","m","n"),4)
col4<-rep(c(9:12),3)
df<-data.table(col1,col2,col3,col4)
我想创建一个新的DataTable,结果就是从给定的与值每列的产品用户然后将它们总结为一个像
final=l*value1+m*value2
问题是如何使用该值创建每列的产品值。
荷拉是我的应用程序
library(shiny)
# Define UI for application that draws a histogram
ui <- fluidPage(
# Application title
titlePanel("Old Faithful Geyser Data"),
# Sidebar with a slider input for number of bins
sidebarLayout(
sidebarPanel(
textInput("value",
"value"),
selectInput("choice",
"choice",unique(df$col3)),
actionButton("update", "Update"),actionButton("calculation", "calculation")
),
# Show a plot of the generated distribution
mainPanel(
dataTableOutput("table"),dataTableOutput("table2"),dataTableOutput("combined")
)
)
)
# Define server logic required to draw a histogram
server <- function(input, output) {
Data<- reactive({
if(input$choice == "NULL") {data <- df}
else {data <- subset(df, col1 == input$choice)}
data
})
output$table<- renderDataTable(Data())
dat<-c()
table2 <- eventReactive(input$update, {
if(!is.null(input$value) && input$update>0){
newrow = data.table(value= input$value,choice=input$choice)
dat <<- rbind(dat, newrow)
}
dat
}, ignoreNULL = FALSE)
output$table2<- renderDataTable(table2())
data_wide <-dcast(df, value.var= "col2", col1~col3)
new<-c()
alldata<-eventReactive(input$calculation, {
for (i in table2()$choice)
{ new<-c(new,i)}
data_new<-na.omit(subset(data_wide, select=c("col1",new)))
})
output$combined <- DT::renderDataTable(alldata())
}
# Run the application
shinyApp(ui = ui, server = server)
表2的结果将是
value choice
2 l
3 m
,并且如果用户选择列升和值2和m列和值3的结果输出时便会最后一列
value1 l value2 m final
2 2 3 3 5
2 4 6 3 10
2 6 9 3 15
2 8 12 3 20
我在下面添加了这个行但是发生了这个错误 Warning :*中的错误:二进制运算符的非数字参数
product<-eventReactive(input$calculation, {
for(j in 2:ncol(alldata())){
set(alldata, i = NULL, j = j, value = alldata()[[j]] * table2()$value[j-1])
}
alldata()
})
output$product <- DT::renderDataTable(product())
}
# Run the application
shinyApp(ui = ui, server = server)
我不从你的描述了解你们的计算的代码是什么不是很清楚。你能更具体地了解某些输入的期望输出吗? – MrFlick
但是'm'定义在哪里? “2 * m”“去”的确切位置在哪里? – MrFlick
@MrFlick我试图让它更清楚我希望它有帮助 – Aleha