我正在使用许多不同的数据集分析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名称,以便我可以动态地执行此操作?或者我是否必须手动进行这些计算?
答案 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应该是字符串。