我有一个接受NSE参数的函数。
假设我有一个tibble,其中有一列需要订购。我想创建一个函数,它可以根据函数参数中输入的名称对列名进行排序。但是,如果我不使用参数,我希望它不对列进行排序,因此我使用< code>column_name = NULL作为默认参数(或< code>column_name = NA)
sort_tibble <- function(column_name = NULL) {
tibble_data <- tibble::tibble(NSE_name = c(0.2, -0.4, 1.7, 0.09, -0.6, -1))
if (!is.null(({{ column_name }}))) {
tibble_data <- tibble_data %>% arrange({{ column_name }})
# Do stuff
}
}
sort_tibble(NSE_name)
#> Error in sort_tibble(NSE_name): objet 'NSE_name' not found
创建于 2022-04-11 由 reprex 软件包 (v2.0.1)
然而,尽管引号{{var}或rlang::eval_。它找不到它,因为它不是一个变量,而是一个整洁的计算,除非它没有在整洁的函数中使用。
我终于找到了解决方案!
这里的想法不是直接尝试使用{{var}}为dplyr注入数据,而是首先使用一个字符串作为函数参数输入,并允许使用< code>sym()和< code >通过dplyr对其进行求值!!。这允许在函数中进行其他非整齐的操作,包括设置数据框的子集或者只是评估参数是否为空(这是我的if函数的条件)。
我提到https://tidyeval.tidyverse.org/sec-why-how.html#unquoting-代码
使用 sym()
将字符串转换为符号。符号需要在 dplyr 中作为列进行评估
sym("NSE_name")
# NSE_name
然后使用< code >!!将评估注入到代码中
library(tidyverse)
f1 <- function(order = NULL) {
df <-
tibble::tibble(NSE_name = c(0.2, -0.4, 1.7, 0.09, -0.6, -1))
f2(order = order)
}
f2 <- function(order = NULL) {
if (!is.null(order)) {
ordered_df <- df %>% arrange(!!sym(order))
return(ordered_df)
}
else print ("No order")
}
f1(order = "NSE_name")
f1()
如何在钩子的if块中调用redux操作: 我有两个选择框。如果此人在选择框中键入,我将的选定id存储在状态中。如果用户选择了一个组,我将它存储在中,所以只有在两个条件都匹配的情况下,我才需要调用APIendpoint来获取。 如果我注释这段代码,就没有错误。如何使代码片段工作?
我无法使用UDPATE AND IF条件更新表中的2个字段。需要帮助。 我有一个发票表格,如果字段号=0,我需要从同一表格中的容量和字段号=1更新字段数量。 我的sql语句不起作用: 错误消息: -您的SQL语法有错误;查看与您的MySQL服务器版本对应的手册,以了解在第1行的“IF(Nos=0)WHERE id=id”附近使用的正确语法
如果这是一个愚蠢的问题,请事先原谅我。 所以,我目前正在检查WooCommerce购物车中的所有物品。 如果购物车中有一个产品属于“Practice”类别,而购物车中没有“Qualification”类别的产品,我想显示消息1 如果“练习”和“资格”类别都在购物车中,我想显示消息2。 现在,这是我的代码: 我有两个产品各有一个类别,一个有“练习”类别,一个有“资格”类别。 当我将这两个产品添加到购
问题内容: 我有两个表,一个表用于新闻,另一个表用于评论,我想获取其状态已设置为批准的评论数。 但是此查询的问题在于,无论是否存在与该新闻相对应的评论,为评论列获取的最小值为1。 任何帮助将是非常可贵的。 问题答案: 使用代替 请尝试以下方法:
但是,VSC告诉我“构造函数调用必须是构造函数中的第一条语句”。我怎样才能克服这个问题?
我想为创建If condition,当评论的值如下时,我为变量Comment创建If Conditional 因为我在一个布局中有不同的设计和不同的功能,如果我创建*ex2Layout,它不是高效的*我想 但我有错误: 问题就在这里: 谁能建议我?