You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

R语言中转置矩阵中位数存入dataframe列数值重复问题如何解决

R中位数计算结果赋值异常解决方案

异常原因

赋值后数值全部相同的核心触发点为两个:

  • data.frame执行t()转置后会返回矩阵类型,原数据框的12列会转为矩阵的12行,维度逻辑和数据框存在差异
  • 赋值时触发了R的向量循环填充规则:如果赋值的向量长度和目标数据框的行数不匹配,R会自动重复短向量填充整列,若误将单个中位数赋值给12行的列,就会出现全列值相同的情况

注:median()函数默认返回单个中位数数值,若打印w1得到12个不同值,说明实际执行的是按行/按列批量计算中位数的逻辑,只要保证计算得到的w1长度为12,和目标数据框的行数一致即可正常赋值。

正确操作方法

方法1:无需转置直接计算(推荐)

不需要额外转置,直接用apply对原数据框的列维度批量计算中位数:

# 第二个参数为2代表按列计算,返回长度为12的中位数向量
w1 <- apply(prod_fm_wt_3, 2, median)
# 直接赋值给目标数据框的对应列即可
target_df$median_col <- w1

方法2:基于转置矩阵计算

如果需要沿用现有转置逻辑,对转置后的矩阵按行计算中位数即可:

t <- t(prod_fm_wt_3)
# 第二个参数为1代表按行计算,每行对应原数据框的一列
w1 <- apply(t, 1, median)
# 赋值给目标列
target_df$median_col <- w1

内容的提问来源于stack exchange,提问作者Kelly yisi Liu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 17:54:04