首页 > 解决方案 > 在函数 (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?我想设置它,以便我可以轻松地在各种不同的列和数据框上运行该函数。我猜我需要以不同的方式引用该列?谢谢!

标签: r

解决方案


在函数中传递数据框和列名。也是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)

推荐阅读