基于这个线程,我创建了一个动态列名w/dplyr::mutate(),在'dplyr'中使用动态变量名,现在我想对新列进行排序。。。。但我没有正确传递列名
library(glue)
library(dplyr)
# data
set.seed(123)
df <- data.frame(distance = sample(1:100, size = 10))
# custom function
multiply_function <- function(df, metric, multiplier){
df %>%
mutate(., "{{metric}}_x{{multiplier}}" := {{metric}} * multiplier) %>%
arrange(desc("{{metric}}_x{{multiplier}}")) # <--- this is not working
}
df %>%
multiply_function(., metric = distance, multiplier = 3)
distance distance_x3
1 31 93
2 79 237
3 51 153
4 14 42
5 67 201
6 42 126
7 50 150
8 43 129
9 97 291
10 25 75
如果某个函数是管道本身的一部分,我不确定这个排列步骤是否最好放在该函数中。如果试图制造几个变量,可能会出现问题。对于一个新变量:
multiply_function <- function(df, metric, multiplier){
df %>%
mutate("{{metric}}_x{{multiplier}}" := {{metric}} * multiplier) %>%
arrange(desc(!!rlang::sym(setdiff(names(.), names(df)))))
}
不幸的是,我不知道是否有任何方法可以将这个好的粘合语法用于不在:=
左侧的任何东西。奇迹就在那里发生了。你可以得到一些工作,如果你照顾显式转换求和你自己,并手动做字符串建设。虽然不好看,但这很管用
multiply_function <- function(df, metric, multiplier){
metric <- ensym(metric)
newname <- glue::glue("{rlang::as_string(metric)}_x{as.character(multiplier)}")
df %>%
mutate("{newname}" := !!metric * multiplier) %>%
arrange(desc(.data[[newname]]))
}
我有一个具有以下结构的数据集: 我想提供一个函数,它允许计算任何值之间的差异,我想这样做使用s这样的函数:(假设参数和作为参数传递) 当然,这不起作用,因为使用非标准评估。我知道现在有一个优雅的解决方案,可以使用来解决这个问题,我已经读过这个小插曲,但我仍然无法理解它。 怎么办? 以下是数据集的前几行,以获得一个可复制的示例
我尝试使用以下代码来完成此操作: 我得到以下输出: sim(测试,“测试”)
我编写了这个函数,它只是用子字符串替换数据表列中的每个值: 但每次我试着运行它时,我都会发现错误: 现在我已经做了很多关于为什么它不起作用的研究,但我不明白。我读过一些关于标准评估和懒散的东西,但我尝试的似乎都不管用。有什么帮助吗? 谢谢
问题内容: 我是AngularJS的新手。我做了一个自定义指令,我想通过使用变量在类属性中动态调用它。例如, 当我在以下代码中使用此变量时: 其结果必须显示两个具有指定值的输入字段。但是它没有这样做。当我更换使用。它工作正常,意味着显示两个输入字段,并带有指定的值。有人可以告诉我我在做什么错吗? 这是index.html 这是script.js template.html包含: 问题答案: 不幸的
问题内容: 我想在SASS中动态创建mixins,以列表中的每个项目命名,但是似乎不起作用。 我尝试了这个,但出现错误: 错误: SASS不支持此用法吗?我在手册中找不到任何相关内容。 问题答案: 当前似乎不支持@mixins中的变量插值。 SASS文档将其称为并描述如下: 插值:#{} 您还可以使用#{}插值语法在 选择器 和 属性名称中 使用SassScript变量: 根据文档,仅选择器和属性
问题内容: 我正在尝试将自己的自定义对象传递到包中: 我得到错误: 问题答案: 一种方法是让您的自定义对象实现Parcelable接口并使用