R 在lappy中引用数据帧列表中的变量

R 在lappy中引用数据帧列表中的变量,r,function,lapply,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,

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

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)
我尝试先编写一个函数,然后使用Lappy为每个学校生成一个单独的表。具体来说,我试过的是

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")

我的猜测是,我没有正确地使用变量名作为函数参数。我试过了,没有引号,但结果是一样的。任何帮助都将不胜感激

尝试用数据[[var]]替换函数中的数据$var。这是一个常见问题。。。为什么$在函数内部失败。您应该仔细阅读帮助页的?$,然后重新仔细阅读,然后再仔细阅读。然后等待一周,然后重复。正确使用提取函数对学习R至关重要。感谢您抽出时间回答,也感谢aosmith提供的建设性帮助。BondedDust:我确实查阅了这一页上的搜索,而且,有趣的是,我在你写的那句话中加入了为什么$why does fail in functions,而且没有点击。似乎在我未来的问题中,我必须添加一句话,我确实参考了搜索功能,但没有得到一个好的结果,以便得到建设性的答案。
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"