r - 在函数 (R) 中将列内容设置为变量
问题描述
我正在尝试在 R 中创建一个表,该表基于组(“治疗”)计算汇总统计信息,作为较长函数的一部分。在运行函数之前,我输入了我想要汇总的数据框名称(数据)和列(y)。
data = df
y = df$columna
x <- function(model) {
summary <- data %>%
group_by(Treatment) %>%
summarize(Mean= mean(y), StdError = se(y), Mean_StdError = mean(y) + se(y), Max= max(y), Min= min(y),
Range = max(y)-min(y), n = n()) }
但是,似乎因为 y 被保存为与数据框无关的新变量,所以 R 正在计算整个数据集的汇总统计数据,而不是按处理分组。如何设置我的代码,以便我可以将我想要的 (y) 列指定为函数外部的变量,而不是用 df$columna 替换 y?我想设置它,以便我可以轻松地在各种不同的列和数据框上运行该函数。我猜我需要以不同的方式引用该列?谢谢!
解决方案
在函数中传递数据框和列名。也是y
列值,您应该在函数中传递列名以保持其灵活性。尝试以下非标准评估。
library(dplyr)
library(rlang)
x <- function(data, y) {
data %>%
group_by(Treatment) %>%
summarize(Mean= mean({{y}}),
StdError = se({{y}}),
Mean_StdError = mean({{y}}) + se({{y}}),
Max= max({{y}}), Min= min({{y}}),
Range = max({{y}})-min({{y}}),
n = n())
}
现在您可以将函数调用为:
x(df, columna)
推荐阅读
- php - Symfony4 使用外部类库作为服务
- scala - Spark hive udf:没有处理 UDAF 分析异常的处理程序
- linux - 如何在 C++ 中正确链接 .so 库?
- java - Android Spinner 不显示下拉菜单
- node.js - 如何打印整个json数据
- javascript - javascript - 加入2个日期数组
- image - 在 vuetify 中搜索左侧浮动的图像样本
- linux - 等到第一个 .jar 文件完成后再在 for 循环中执行第二个 .jar 文件
- node.js - NodeJS 和 ECMA 脚本版本
- ocaml - 如何编译使用 JsooTop 模块的文件?