R 基于列名列表获取数据帧中特定列的平均值

R 基于列名列表获取数据帧中特定列的平均值,r,R,我需要修改其他人编写的一些R代码,使其更通用。编写此代码是为了在具有特定列名的特定数据上运行,但他们希望能够在完全不同的数据集上运行相同的代码。这意味着我需要让代码获取列名向量,并在引用特定列的地方使用这些向量 作为一个简单的例子,假设我有一个数据框,其中每一行都是一个人的年龄、性别和一系列关于这个人的观察值。这是我的数据: df <- data.frame(age=sample(20:30, 500, T), gender=sample(c("M", "F"), 500, T),

我需要修改其他人编写的一些R代码,使其更通用。编写此代码是为了在具有特定列名的特定数据上运行,但他们希望能够在完全不同的数据集上运行相同的代码。这意味着我需要让代码获取列名向量,并在引用特定列的地方使用这些向量

作为一个简单的例子,假设我有一个数据框,其中每一行都是一个人的年龄、性别和一系列关于这个人的观察值。这是我的数据:

df <- data.frame(age=sample(20:30, 500, T), gender=sample(c("M", "F"), 500, T), 
                 A=sample(1:100, 500, T), B=sample(3:50, 500, T), 
                 C=sample(2:6, 500, T))
然后我想,对于每一对年龄和性别,得到其他变量的平均值。在具体情况下,我想做:

df.means <- ddply(df, .(age, gender), summarize, mean_A = mean(A), mean_B = mean(B))
然而,我想要的是给定向量,id_vars您可以尝试dplyr

在哪里

library(dplyr)
res <- df %>% 
          group_by_(.dots=id_vars) %>% 
          summarise_each_(funs(mean), covariates)

head(res,3)
#    age gender        A        B        C
#  1  20      F 39.35294 24.70588 3.235294
#  2  20      M 59.14286 25.35714 4.428571
#  3  21      F 54.19048 26.66667 3.809524
id_vars <- c("age", "gender")
covariates <- c("A", "B", "C")