【发布时间】:2020-09-14 14:37:24
【问题描述】:
我要自定义lapply(df, FUN = mean)
效果很好,
mtcars
means.mtcars <- lapply(mtcars, FUN = mean)
但我想查看prop.table(table(df$column)) 并根据其不同级别将它们保存为不同的行
mtcars$gear1 <- factor(mtcars$gear, levels = c(3,4,5))
my.mean <- function(df) {
ifelse(is.numeric(df)== T, mean(df),
ifelse(df$gear1 == 3, df$newColumn1 == as.data.frame(prop.table(table(df$gear1)))[1, "Freq"],
ifelse( df$gear1 == 4, df$newColumn2 == as.data.frame(prop.table(table(df$gear1)))[2, "Freq"],
df$newColumn3 == as.data.frame(prop.table(table(df$gear1)))[3, "Freq"] )))
}
not.working <- lapply(mtcars, FUN = my.mean)
预期结果 表示.mtcars,最后是 newColumn1,newColumn2,newColumn3
V1
mpg 20.090625
cyl 6.187500
disp 230.721875
hp 146.687500
drat 3.596563
wt 3.217250
qsec 17.848750
vs 0.437500
am 0.406250
gear 3.687500
carb 2.812500
newColumn1 0.46875
newColumn2 0.37500
newColumn3 0.15625
提前多谢
【问题讨论】:
-
mean将向量作为输入。您的函数将 data.frame 作为输入。lapply仅接受作为FUN传递的函数中的前者。
标签: r dplyr tidyverse lapply data-manipulation