salary <- data.frame(name=c("Kay","Dave","Jon","Jenny","Jim","Eve","Ed"),
salary=c(60000, 100000, 50000, 80000, 30000, 40000, 20000),
gender=factor(c("F","M","M","F","M","F","M")))
我能够用过滤女性数据帧
femaleFiltered <- salary[ which(salary$gender=='F'), ]
我正在尝试使用
getMaxSal1 <- function(x) {
x[which.max(x$salary),]
}
apply(femaleFiltered,2,getMaxSal1)
但是得到错误";x$salary中的错误:$运算符对于原子向量"无效;
我们可以从base R
使用subset
subset(femaleFiltered, salary == max(salary))
# name salary gender
#4 Jenny 80000 F
或根据OP关于可能使用*apply
的要求
femaleFiltered[unlist(lapply(names(femaleFiltered),
function(nm) which.max(femaleFiltered[nm]$salary))),]
# name salary gender
#4 Jenny 80000 F
我建议
aggregate(salary$salary, by=list(salary$gender), FUN = max)
哦,刚刚读到需要做一个应用程序函数。
列出两个数据帧,一个用于男性,一个为女性。
然后使用带有FUN=最大的lapply((
lapply(list(femaleFiltered$salary, maleFiltered$salary), max)