r语言 - 在一个Shiny应用的响应式函数中使用if else语句



我试图使用一个if else语句内响应函数输出一个基于用户输入的数据集,这是一个下拉菜单中的选择。但似乎我总是得到"else"。输出,不管我选择什么。有人能帮帮我吗?提前感谢!

extract_name <- function(v1) {
deparse(substitute(v1))
}
plotly_data <- reactive({

if (grepl("fdr", extract_name(input$fsChoice)) == TRUE) {

edited_data <- fs_data %>%
dplyr::select(region, hemi, metric, input$fsChoice) %>%
dplyr::filter(metric == input$metric) %>%
dplyr::filter(hemi == input$hemi) %>%
dplyr::filter(noninput$fsChoice > 1.30103)

}

else {

edited_data <- fs_data %>%
dplyr::select(region, hemi, metric, input$fsChoice) %>%
dplyr::filter(metric == input$metric) %>%
dplyr::filter(hemi == input$hemi)
}

return(edited_data)

}
)

当您向deparse(substitute(...))传递变量时,它的行为会有所不同。

extract_name <- function(v1) {
deparse(substitute(v1))
}
var <- "abc"
extract_name("abc")
#[1] ""abc""
extract_name(var)
#[1] "var"

在这种情况下,我认为你不需要extract_name功能。试试直接使用input$fsChoice

plotly_data <- reactive({
if (grepl("fdr",input$fsChoice)) {

edited_data <- fs_data %>%
dplyr::select(region, hemi, metric, input$fsChoice) %>%
dplyr::filter(metric == input$metric) %>%
dplyr::filter(hemi == input$hemi) %>%
dplyr::filter(noninput$fsChoice > 1.30103)

}
else {
edited_data <- fs_data %>%
dplyr::select(region, hemi, metric, input$fsChoice) %>%
dplyr::filter(metric == input$metric) %>%
dplyr::filter(hemi == input$hemi)
}
return(edited_data)
}
)

相关内容

  • 没有找到相关文章

最新更新