如何使用lapply计算iris拆分的数据框列表中Petal.Width列的均值?
计算数据框列表中指定列的平均值
嘿,我来帮你搞定这个问题!针对你把iris按每10行拆分后得到的数据框列表,用lapply或者sapply就能轻松算出每个子数据框里Petal.Width的平均值,完全符合你的需求~
第一步:生成目标数据框列表
首先先确认如何生成你提到的拆分后的列表(方便后续验证结果):
# 提取iris的Petal.Width和Species列,再按每10行拆分 df_list <- split(iris[, c("Petal.Width", "Species")], ceiling(seq(nrow(iris))/10))
这样得到的df_list就是包含15个数据框的列表,和你描述的df = list(df1, df2,...,df15)完全一致。
第二步:用lapply计算平均值(返回列表)
lapply会遍历列表中的每个数据框,执行自定义的计算函数,返回结果列表:
# 遍历列表,计算每个数据框的Petal.Width平均值 petal_width_means <- lapply(df_list, function(x) mean(x$Petal.Width)) # 查看前两个结果,和你预期的一致 petal_width_means[[1]] # [1] 0.22 petal_width_means[[2]] # [1] 0.25
第三步:用sapply简化结果(返回向量)
如果你想要更简洁的向量形式结果,用sapply就可以自动把列表结果简化为向量:
# 直接得到向量格式的平均值 petal_width_means_vec <- sapply(df_list, function(x) mean(x$Petal.Width)) # 查看结果 petal_width_means_vec
输出会是一个长度为15的向量,每个元素对应一个子数据框的Petal.Width平均值。
内容的提问来源于stack exchange,提问作者Rafael Díaz
相关产品推荐
相关产品推荐

