【发布时间】:2025-12-10 21:00:01
【问题描述】:
我正在尝试创建一个函数,您可以在其中传递数据框和其中一列的名称。在函数中,它应该改变数据框以创建您发送的列的缩放版本。这是我的尝试:
test_scale <- function(outcome, data){
outcome_scaled = paste0(outcome, "_s")
data = data %>% mutate(!!outcome_scaled := scale(as.numeric(outcome)))
print(head(data[, outcome_scaled]))
}
但是,这不起作用,因为它只是打印我传递的任何结果的文本。
> test_scale("age", df)
mutate: new variable 'age_s' (character) with one unique value and 0% NA
[1] "age" "age" "age" "age" "age" "age"
如何获取outcome 的实际值,而不是传递的结果变量的字符串文本?
【问题讨论】:
-
如果您包含一个简单的reproducible example,其中包含可用于测试和验证可能解决方案的示例输入和所需输出,则更容易为您提供帮助。不妨先查看dplyr.tidyverse.org/articles/programming.html 的示例。
-
请问你
dplyr的版本? -
这个问题的变体被问了很多,并得到了很多回答 - 为了与最新的 dplyr 语义保持一致,您需要类似
test_scale <- function(outcome, data) { data %>% mutate(across({{outcome}}, ~ scale(as.numeric(.x)), .names = "{col}_s")) } -
谁来编写包含任意 dplyr 代码并将其转换为任何最新 dplyr 语义的包?如果您必须将代码强制转换为数据框才能工作,则可以加分