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

在R中创建空矩阵时行数不符的技术问询

问题原因分析
  • 浮点数精度丢失:问题核心在于factorial(m)是极大的整数,R的双精度浮点数无法精确存储这么大的数值,导致组合数计算出现精度误差。

    • 理论上bin[2]应为组合数C(50,2)=1225,但实际计算结果是接近1225的浮点数(如1224.9999999999998)。
    • 当该浮点数传入matrix的nrow参数时,R会自动截断取整(而非四舍五入),最终行数变为1224。
  • 验证方式:直接打印bin[2]可查看实际值,用is.integer(bin[2])会返回FALSE;执行round(nRow)能得到正确的1225。

解决办法
  • 方法一:使用R内置的choose()函数直接计算组合数,避免阶乘运算的精度问题:

    bin <- choose(m, p)
    

    此方法得到的bin[2]是精确整数1225,sum后传入nrow即可生成正确行数的矩阵。

  • 方法二:若坚持用阶乘计算,对结果取整后再传入参数:

    nRow <- as.integer(sum(bin[subset.min:subset.max]))
    # 或使用round()
    nRow <- round(sum(bin[subset.min:subset.max]))
    

内容的提问来源于stack exchange,提问作者Vanderlei Debastiani

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 10:47:03