使用RShiny中的颜色验证数据
我正在开发一款闪亮的应用程序。我需要用两种颜色验证textOutput中显示的值。例如,如果textOutput中显示的值为100,则应突出显示粉红色。它对我有用。但如果显示的值小于100或大于100,则应突出显示红色。这对我不起作用 除此之外,我还需要将输入和显示的文本居中对齐使用RShiny中的颜色验证数据,r,shiny,R,Shiny,我正在开发一款闪亮的应用程序。我需要用两种颜色验证textOutput中显示的值。例如,如果textOutput中显示的值为100,则应突出显示粉红色。它对我有用。但如果显示的值小于100或大于100,则应突出显示红色。这对我不起作用 除此之外,我还需要将输入和显示的文本居中对齐 require(shiny) require(shinyjs) #install.packages("shinyjs") ui = fluidPage( useShinyjs(), i
require(shiny)
require(shinyjs)
#install.packages("shinyjs")
ui = fluidPage( useShinyjs(),
inlineCSS(list(.lightpink = "background-color: lightpink"), (.red = "background-color: red")),
fluidRow(
column(3,numericInput("count", "No. of boxes",value = 3, min = 2, max = 10),actionButton("View","view")
)
),
fluidRow(uiOutput("inputGroup")),
fluidRow(column(3,wellPanel(textOutput("text3"))))
)
# takes in two arguments
sumN <- function(a, x){
a <- sum(a, as.numeric(x),na.rm=T)
return(a)
}
server <- function(input, output, session) {
Widgets <- eventReactive(input$View,{ input_list <- lapply(1:(input$count),
function(i) {
inputName <- paste("id", i, sep = "")
textInputRow <- function (inputId,value) {
textAreaInput(inputName,"", width = "200px", height = "43px", resize = "horizontal" )
#numericInput(inputName,"",1,0,100)
}
column(4,textInputRow(inputName, "")) })
do.call(tagList, input_list)},ignoreInit = T)
output$inputGroup = renderUI({Widgets()})
getvalues <- reactive({
val <- 0
for(lim in 1:input$count){
observeEvent(input[[paste0("id",lim)]], {
updateTextAreaInput(session,paste0("id",lim), value = ({
x = as.numeric(input[[paste0("id",lim)]])
if(!(is.numeric(x))){0}
else if(!(is.null(x) || is.na(x))){
if(x < 0){
0
}else if(x > 100){
100
} else{
return (isolate(input[[paste0("id",lim)]]))
}
}
#else{0}
else if((is.null(x) || is.na(x))){
0
}
})
)
})
req(as.numeric(input[[paste0("id",lim)]]) >= 0 & as.numeric(input[[paste0("id",lim)]]) <= 100)
val <- sumN(val,as.numeric(input[[paste0("id",lim)]]))
}
val
})
output$text3 <- renderText({
#getvalues()
# if(getvalues() > 100){
# 0
# }
#else(getvalues())
getvalues()
})
observeEvent(getvalues(), {
nn <- getvalues()
if(is.numeric(as.numeric(nn)) & !is.na(as.numeric(nn)) & nn == 100) {
addClass("text3", 'lightpink')
} else { addClass('text3','red')}
})
}
shinyApp(ui=ui, server = server)
require(闪亮)
需要(shinyjs)
#install.packages(“shinyjs”)
ui=fluidPage(useShinyjs(),
inlineCSS(列表(.lightpink=“背景色:lightpink”),(.red=“背景色:红色”),
fluidRow(
列(3,数字输入(“计数”,“框数”),值=3,最小值=2,最大值=10),操作按钮(“查看”,“查看”)
)
),
fluidRow(uiOutput(“inputGroup”)),
fluidRow(第3列,井面板(文本输出(“文本3”)))
)
#包含两个论点
sumN添加了removeClass
以修复粉红色的并应用红色的:
require(shiny)
require(shinyjs)
#install.packages("shinyjs")
ui = fluidPage( useShinyjs(),
inlineCSS(list('.lightpink' = "background-color: lightpink",'.red' = "background-color: red", "textarea" = 'text-align: center', '#text3 ' = 'text-align: center')),
fluidRow(
column(3,numericInput("count", "No. of boxes",value = 3, min = 2, max = 10),actionButton("View","view")
)
),
fluidRow(uiOutput("inputGroup")),
fluidRow(column(3,wellPanel(textOutput("text3"))))
)
# takes in two arguments
sumN <- function(a, x){
a <- sum(a, as.numeric(x),na.rm=T)
return(a)
}
server <- function(input, output, session) {
Widgets <- eventReactive(input$View,{ input_list <- lapply(1:(input$count),
function(i) {
inputName <- paste("id", i, sep = "")
textInputRow <- function (inputId,value) {
textAreaInput(inputName,"", width = "200px", height = "43px", resize = "horizontal" )
#numericInput(inputName,"",1,0,100)
}
column(4,textInputRow(inputName, "")) })
do.call(tagList, input_list)},ignoreInit = T)
output$inputGroup = renderUI({Widgets()})
getvalues <- reactive({
val <- 0
for(lim in 1:input$count){
observeEvent(input[[paste0("id",lim)]], {
updateTextAreaInput(session,paste0("id",lim), value = ({
x = as.numeric(input[[paste0("id",lim)]])
if(!(is.numeric(x))){0}
else if(!(is.null(x) || is.na(x))){
if(x < 0){
0
}else if(x > 100){
100
} else{
return (isolate(input[[paste0("id",lim)]]))
}
}
#else{0}
else if((is.null(x) || is.na(x))){
0
}
})
)
})
req(as.numeric(input[[paste0("id",lim)]]) >= 0 & as.numeric(input[[paste0("id",lim)]]) <= 100)
val <- sumN(val,as.numeric(input[[paste0("id",lim)]]))
}
val
})
output$text3 <- renderText({
#getvalues()
# if(getvalues() > 100){
# 0
# }
#else(getvalues())
getvalues()
})
observeEvent(getvalues(), {
nn <- getvalues()
if(is.numeric(as.numeric(nn)) & !is.na(as.numeric(nn)) & nn == 100) {
removeClass("text3", 'red')
addClass('text3','lightpink')
} else { addClass('text3','red')}
})
}
shinyApp(ui=ui, server = server)
require(闪亮)
需要(shinyjs)
#install.packages(“shinyjs”)
ui=fluidPage(useShinyjs(),
inlineCSS(列表('.lightpink'='background color:lightpink','.red'='background color:red',textarea'='text align:center','#text3'='text align:center'),
fluidRow(
列(3,数字输入(“计数”,“框数”),值=3,最小值=2,最大值=10),操作按钮(“查看”,“查看”)
)
),
fluidRow(uiOutput(“inputGroup”)),
fluidRow(第3列,井面板(文本输出(“文本3”)))
)
#包含两个论点
sumN可能重复,但如果值超过100,此处将突出显示粉红色。我怎样才能换成红色?这粉红色是从哪里来的?你能分享一个截图吗,因为我只得到了红色!只是为了验证是否需要红色(如果为100)和粉红色(如果小于或大于100)?如果值为100,则应显示粉红色。若该值大于或小于100,则应显示红色,该值有效。你能告诉我如何将在textAreaInput中输入的文本居中对齐吗?textOutput有可能吗?@Nevedhayanar你也可以一起问!