如何在R中创建由VeryLargeIntegers类型构成的二维矩阵?
如何用VeryLargeIntegers创建二维超大整数矩阵
为什么你的方法行不通
- 第一个方法里,
matrix(NA)生成的是基础类型矩阵,无法存储S4类的vli对象,赋值时类型不兼容导致报错。 - 第二个方法的
array()会把单个vli对象拆解为底层数据,导致数组元素不再是vli类型,所以is.vli()返回FALSE。
正确的创建方式
直接用matrix()配合rep()生成重复的vli实例,确保矩阵每个元素都是合法的超大整数对象:
library(VeryLargeIntegers) # 创建30行436列的全0 vli矩阵 PI <- matrix(rep(as.vli("0"), 30*436), nrow = 30, ncol = 436)
验证与访问元素
现在检查元素类型和值:
is.vli(PI[4,6]) # 返回TRUE PI[4,6] # 输出 vli object: 0
更新元素
后续修改矩阵元素时,直接赋值新的vli对象即可:
# 给(2,5)位置赋值一个超大整数 PI[2,5] <- as.vli("123456789012345678901234567890") # 查看更新后的值 PI[2,5]
更高效的初始化技巧
如果矩阵规模很大,重复调用as.vli("0")会浪费资源,可以先创建单个0的vli对象,再传入matrix():
zero_vli <- as.vli("0") PI <- matrix(zero_vli, nrow = 30, ncol = 436)
这种方式和rep()效果一致,但性能更优,尤其适合大规模矩阵初始化。
内容的提问来源于stack exchange,提问作者Vicent
相关产品推荐
相关产品推荐

