我试图使用一个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)
}
)