R语言使用apply函数为dataframe添加平均值行并重命名为Average
解决方案
首先注意一个小问题:你之前的代码将计算结果赋值给了apply变量,会覆盖R内置的apply()函数,建议更换为其他变量名避免后续代码报错。
以下是两种可直接实现需求的写法:
方式1:rbind绑定时直接指定行名(最简便)
直接在rbind时用Average = 平均值向量的写法,新增的行自动会使用Average作为行名:
# 构造示例数据 state.df = as.data.frame(state.x77) # 计算各列平均值,更换变量名避免覆盖内置函数 col_means = apply(state.df, MARGIN = 2, mean, na.rm = TRUE) # 绑定行时直接指定新增行的名称 state.df_new = rbind(state.df, Average = col_means)
方式2:绑定完成后单独修改最后一行行名
如果你已经完成了rbind操作,只需要修改最后一行的行名,直接对行名向量的最后一位赋值即可:
# 已完成的绑定操作 state.df = as.data.frame(state.x77) col_means = apply(state.df, MARGIN = 2, mean, na.rm = TRUE) state.df_new = rbind(state.df, col_means) # 直接修改最后一行的行名 rownames(state.df_new)[nrow(state.df_new)] <- "Average"
你之前的写法无法生效是因为rownames()函数没有prefix参数,也不能直接作为rbind的参数传入调用。
内容的提问来源于stack exchange,提问作者Abel Pérez
相关产品推荐
相关产品推荐

