【发布时间】:2020-01-09 09:07:47
【问题描述】:
我正在开发一个以 HTML 格式输出文本的闪亮应用程序。从我的数据中,一些字段为空/空。我试图找到在输出中省略空变量的方法。下面是我的 Shinyapp 示例,其中缺少一些数据:
library(shiny)
library(shinydashboard)
library(sqldf)
missingdata=data.frame(
id=c("001","002","003","004"),
age=c("17",NA, "19", NA),
bmi=c(NA, "16", "20", NA),
chol=c("49.8", "50.7", "52.0", "56.5")
)
ui <- dashboardPage(
dashboardHeader(),
dashboardSidebar(
sidebarMenu(
menuItem("TexSearch", tabName = "Tabs", icon = icon("object-ungroup"))) ),
dashboardBody(
tabItem(tabName = "Tabs",
fluidRow(
column(width=3,
box(
title="Search ",
solidHeader=TRUE,
collapsible=TRUE,
width=NULL
)),
column( width=9,
tabBox(
width="100%",
tabPanel("tab1",
htmlOutput("searchtext")
)))))))
server <- function(input, output, session) {
output$searchtext <- renderUI({
searchdata <- reactive({
sqldf(paste0("SELECT *
FROM missingdata
"))
})
output = ""
relevantdata <- searchdata()
if (dim(relevantdata)[1] < 100) {
output <-
paste(output,
"<b>Number of quotes: ",
as.character(dim(relevantdata)[1]),
"</b>.<br/>")
for (i in seq(from = 1,
to = dim(relevantdata)[1])) {
output <- paste(output,
paste("id: ", relevantdata[i, "id"]),
sep = "<br/><br/>")
output <- paste(output,
paste("age: ", relevantdata[i, "age"]),
sep = "<br/><br/>")
output <- paste(output,
paste("bmi: ", relevantdata[i, "bmi"]),
sep = "<br/><br/>")
output <- paste(output,
paste("chol: ", relevantdata[i, "chol"]),
sep = "<br/><br/>")
}
}
HTML(output)
})
}
shinyApp(ui, server)
当年龄和体重指数为 NA 时,我如何避免打印它们并且仅在它们有值时才输出它们?
我没有运气的尝试如下:
if (relevantdata$age == "NA"){
return(NULL)
}else{
output <- paste(output,
paste("age: ", relevantdata[i, "age"]),
sep = "<br/><br/>")
}
还有下面的sn-p,它根本没有输出:
ifelse(is.na(relevantdata$age), return(NULL), output <- paste(output,
paste("age: ", relevantdata[i, "age"]),
sep = "<br/><br/>"))
【问题讨论】: