让用户使用 textInput 指定新的变量名称和定义
Have users specify new variable name and definition using textInput
我希望我的用户创建一个新变量并将其添加到现有数据框中。用户需要通过textInput 输入名称和定义。注意:我已经尝试了 Getting strings recognized as variable names in 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))
ui.R:
fluidPage(
sidebarLayout(
sidebarPanel(
textInput("NewVar_Name", "New attribute's name"),
textInput("NewVar_Def", "New attribute's definition",
"ifelse(rawdata$price_tiers_new == 'Value', 1, 0)"),
br(),
actionButton("addButton", strong("Done!")),
width = 3
),
mainPanel(
verticalLayout(
br()
#Will display a summary of new variable
)
)
)
)
server.R:
function(input, output, session) {
temp <- reactiveValues()
observe(
if(input$addButton == 0) {
temp$df <- rawdata
} else {
temp$df <- mydata()
}
)
mydata <- eventReactive(input$addButton, {
if(input$addButton == 0) {
rawdata
} else {
tempname <- eval(as.name(input$NewVar_Name))
do.call("<-",list(tempname, eval(parse(text=input$NewVar_Def))))
cbind(temp$df, tempname)
}
})
}
我想你可以做到
mydata <- eventReactive(input$addButton, {
if(input$addButton == 0) {
rawdata
} else {
tempdata <- eval(parse(text=input$NewVar_Def))
temp$df <- setNames(cbind(
temp$df,
tempdata),
c(names(temp$df), input$NewVar_Name))
}
})
请注意,ifelse(rawdata$price_tiers_new == 'Value', 1, 0)
将不起作用,因为数据集没有名为 price_tiers_new
的列。
我希望我的用户创建一个新变量并将其添加到现有数据框中。用户需要通过textInput 输入名称和定义。注意:我已经尝试了 Getting strings recognized as variable names in 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))
ui.R:
fluidPage(
sidebarLayout(
sidebarPanel(
textInput("NewVar_Name", "New attribute's name"),
textInput("NewVar_Def", "New attribute's definition",
"ifelse(rawdata$price_tiers_new == 'Value', 1, 0)"),
br(),
actionButton("addButton", strong("Done!")),
width = 3
),
mainPanel(
verticalLayout(
br()
#Will display a summary of new variable
)
)
)
)
server.R:
function(input, output, session) {
temp <- reactiveValues()
observe(
if(input$addButton == 0) {
temp$df <- rawdata
} else {
temp$df <- mydata()
}
)
mydata <- eventReactive(input$addButton, {
if(input$addButton == 0) {
rawdata
} else {
tempname <- eval(as.name(input$NewVar_Name))
do.call("<-",list(tempname, eval(parse(text=input$NewVar_Def))))
cbind(temp$df, tempname)
}
})
}
我想你可以做到
mydata <- eventReactive(input$addButton, {
if(input$addButton == 0) {
rawdata
} else {
tempdata <- eval(parse(text=input$NewVar_Def))
temp$df <- setNames(cbind(
temp$df,
tempdata),
c(names(temp$df), input$NewVar_Name))
}
})
请注意,ifelse(rawdata$price_tiers_new == 'Value', 1, 0)
将不起作用,因为数据集没有名为 price_tiers_new
的列。