【发布时间】:2017-06-16 21:56:52
【问题描述】:
嗨,Shiny 用户,
我希望我的用户能够将新变量添加到主数据框中。用户将使用 textInput 键入定义。然后我们将使用 server.R 将其添加到数据框中。这是我的代码。我无法让它工作。任何帮助将不胜感激。谢谢!
原始数据:
colA <- c('1','2','3','3','2')
colB <- c('1','1','3','3','2')
colC <- c('14','12','33','33','26')
colD <- c('Value','Mainstream','Value','Premium','Premium')
colE <- c(1,2,3,4,5)
rawdata <- as.data.frame(cbind(colA,colB, colC, colD, colE))
View(rawdata)
ui.R:
fluidPage(
sidebarLayout(
sidebarPanel(
textInput("addVar", "New attribute definition"),
helpText("Note: Type the attribute definition using R code."),
helpText("For example:"),
helpText("data$Value <- ifelse (data$price_tiers_new == 'Value', 1, 0)"),
br(),
actionButton("addButton", strong("Add!")),
width = 3
),
mainPanel(
verticalLayout(
br()
#Will display histogram of the newly added variables
)
)
)
)
服务器.R:
function(input, output, session) {
curr <- reactiveValues()
curr$df <- rawdata
observeEvent(input$addButton, {
eval(parse(text=input$filter))
})
}
例如,这里有两个新的变量定义可供尝试。如果我们添加第一个定义,rawdata 将有一个额外的列(值)。如果我们添加第二个定义,rawdata 将有两个额外的列(Value 和 Premium)。
curr$df$Value <- ifelse(curr$df$colD == 'Value', 1, 0)
curr$df$Premium <- ifelse(curr$df$colD == 'Premium', 1, 0)
【问题讨论】: