引用lapply中的数据帧列表中的变量

时间:2014-10-14 16:07:54

标签: r function lapply

我想为我的数据的各个子组生成频率表。数据如下:

school <- c(rep(1, 20), rep(2,20))
class <- c(rep(1,10), rep(2,10), rep(1,10), rep(2,10))
female <- sample(0:1, 40, replace=TRUE)
age <- sample(12:13, 40, replace=TRUE)
data <- data.frame(school, class, female, age)

有2所学校,每所学校有2个班级。我的目标是获得一个函数,允许我为每个学校生成一个指定变量的频率表。每所学校的表格应包括整个学校以及学校内每个班级的给定变量的频率。它看起来应该是这样的(示例变量 female ):

 Female  0  1
 school 10 10
 Class1  8 12
 Class2 11  9 

我尝试先编写一个函数,然后使用 lapply 为每个学校单独创建一个表。具体来说,我试过的是

dist <- function(data, var) {
f_all <- table(data$var)
f_class <- table(data$class, data$var)
freq <- rbind(f_all, f_class)
return(freq)
}

data_test <- split(data, school)
a <- lapply(data_test, dist, var="age")

当我应用此代码时,我收到一条错误消息

"Error in table(data$class, data$var)) : 
 all arguments must have the same length"

我的猜测是我无法正确使用变量名作为函数参数。我试过没有引号,但结果相同。任何帮助将不胜感激!

0 个答案:

没有答案