在R语言中使用aggregate计算中位数后如何将data.frame转为array
解决方法
你可以直接从aggregate返回的data.frame中提取分组和对应计算结果,直接构造符合要求的array:
# 你的原始aggregate计算 df_median <- aggregate(mtcars$mpg ~ mtcars$gear, FUN=median) # 转换为array my_array <- array( data = df_median[[2]], dim = nrow(df_median), dimnames = list(gear = df_median[[1]]) )
验证结果:
> class(my_array) [1] "array" > my_array gear 3 4 5 15.5 22.8 19.7
和你用tapply得到的输出完全一致。
也可以用简化写法:
my_array <- as.array(setNames(df_median[[2]], df_median[[1]]))
原方法失败的原因
你之前的操作中,转置data.frame后得到的是单行数据框,调用simplify2array时会自动降维为普通numeric向量,丢失了array类型标识,才会出现不符合要求的结果。
内容的提问来源于stack exchange,提问作者emr2
相关产品推荐
相关产品推荐

