【发布时间】:2021-09-24 16:31:27
【问题描述】:
我正在寻找一种简单的方法来让我的函数使用来自 Shiny 的输入(即字符串输入)或典型的交互式使用,即 Tidyverse 函数通过 NSE 启用。无需复制我的代码来分别处理每种情况。
使用示例:
library(dplyr)
flexible_input <- function(var){
mtcars %>%
select(var)
}
# This works for NSE
nse_input <- function(var){
mtcars %>%
select({{ var }})
}
# This works for shiny but now I am duplicated my code essentially
shiny_input <- function(var){
mtcars %>%
select(.data[[var]])
}
flexible_input(mpg)
flexible_input('mpg')
【问题讨论】:
-
# This works for NSE和# This works for shiny是什么意思?该函数根据传递的输入以及您如何调用它来工作。如果您在闪亮或其他任何地方使用它,它不会改变它的行为。 -
闪亮的小部件将值作为字符串传递。所以这个函数可以处理字符串。而 NSE 通过传递变量名称而不被引用来工作。因此该函数将使用该输入。