具有动态变量的函数

时间:2016-06-26 22:17:59

标签: r dynamic

我正在使用许多不同的数据集分析R中的数据,并且我想将虚拟变量发送到一个函数,该函数然后对主数据集进行子集并输出子集中变量的均值。

例如,我的数据集名为“two”,我的虚拟变量是“over50”,我的功能是:

getMean <- function(varName) {
   sub1 <- two[two$varName == 1, ]
   sub2 <- two[two$varName == 0, ]
   print(mean(sub1$return)
   print(mean(sub2$return)
}

然而,当我致电getMean(over50)时,我得不到预期的答案。

有没有办法将函数输入转换为var名称,以便我可以动态地执行此操作?或者我是否必须手动进行这些计算?

2 个答案:

答案 0 :(得分:1)

我认为您想要的语法是two[two[, varName] == 0, ]

更一般地说,您可以通过将字符串作为data[c("row1", "row2"), c("col1", "col2")]传入来访问数据框的列/行。

附注:我认为你在print()陈述中也遗漏了几个右括号。

答案 1 :(得分:0)

在这种情况下,将字符串传递给函数会更容易。这是一个带有data.frame和变量名(字符串)的通用函数。

getMean <- function(df, varName) {
   mean1 <- mean(df[df[[varName]] == 1, ]$return)
   mean2 <- mean(df[df[[varName]] == 1, ]$return)

  return(c("mean1"=mean1, "mean2"=mean2))
}

这将返回带有两种方法的命名向量。 df参数必须是data.frame名称(不带引号),而varname应该是字符串。