R:操作bigz向量/列表的困难

R:操作bigz向量/列表的困难,r,optimization,gmp,R,Optimization,Gmp,以下是我每天使用的两个方案,我在使用gmp包时遇到了问题: 正常行为: ### example 1 (changing a subset of a vector) > v1 <- rep(1,10) > v1[3:7] <- 2:6 > v1 [1] 1 1 2 3 4 5 6 1 1 1 ### example 2 (flattening a list to a vector) > mylist1 <- list(1:5,6:10) > un

以下是我每天使用的两个方案,我在使用
gmp
包时遇到了问题:

正常行为:

### example 1 (changing a subset of a vector)
> v1 <- rep(1,10)
> v1[3:7] <- 2:6
> v1
 [1] 1 1 2 3 4 5 6 1 1 1

### example 2 (flattening a list to a vector)
> mylist1 <- list(1:5,6:10)
> unlist(mylist1)
 [1]  1  2  3  4  5  6  7  8  9 10
### example 1 (when changing a subset, the vector is lost)
> v2 <- as.bigz(rep(1,10))
> v2[3:7] <- as.bigz(2:6)
> v2
Big Integer ('bigz') 10 x 1 matrix:
  [,1]
 [1,] 1   
 [2,] 1   
 [3,] 2   
 [4,] 3   
 [5,] 4   
 [6,] 5   
 [7,] 6   
 [8,] 1   
 [9,] 1   
[10,] 1

### example 2 (strange behavior when flattening)
> mylist2 <- list(as.bigz(1:5),as.bigz(6:10))
> unlist(mylist2)
[1] 05 00 00 00 01 .... ##### many more "raw"-like entries
###示例1(更改向量的子集)
>v1[3:7]v1
[1] 1 1 2 3 4 5 6 1 1 1
###示例2(将列表展平为向量)
>mylist1未列出(mylist1)
[1]  1  2  3  4  5  6  7  8  9 10
GMP等价物:

### example 1 (changing a subset of a vector)
> v1 <- rep(1,10)
> v1[3:7] <- 2:6
> v1
 [1] 1 1 2 3 4 5 6 1 1 1

### example 2 (flattening a list to a vector)
> mylist1 <- list(1:5,6:10)
> unlist(mylist1)
 [1]  1  2  3  4  5  6  7  8  9 10
### example 1 (when changing a subset, the vector is lost)
> v2 <- as.bigz(rep(1,10))
> v2[3:7] <- as.bigz(2:6)
> v2
Big Integer ('bigz') 10 x 1 matrix:
  [,1]
 [1,] 1   
 [2,] 1   
 [3,] 2   
 [4,] 3   
 [5,] 4   
 [6,] 5   
 [7,] 6   
 [8,] 1   
 [9,] 1   
[10,] 1

### example 2 (strange behavior when flattening)
> mylist2 <- list(as.bigz(1:5),as.bigz(6:10))
> unlist(mylist2)
[1] 05 00 00 00 01 .... ##### many more "raw"-like entries
####示例1(更改子集时,向量丢失)
>v2[3:7]v2
大整数('bigz')10 x 1矩阵:
[,1]
[1,] 1   
[2,] 1   
[3,] 2   
[4,] 3   
[5,] 4   
[6,] 5   
[7,] 6   
[8,] 1   
[9,] 1   
[10,] 1
###示例2(展平时的奇怪行为)
>mylist2未列出(mylist2)
[1] 05 00 00 00 01 .... ##### 还有更多类似“原始”的条目
如果有gmp等价物(即unlist.bigz)就好了,因为我们知道在R中“增长”的对象可能会非常慢。大多数情况下,我被迫声明一个空的bigz向量,并不断地添加到其中,如:

> v3 <- as.bigz(rep(1,2))
> v3 <- c(v3, as.bigz(2:6))
> v3 <- c(v3, as.bigz(rep(1,3)))
> v3
Big Integer ('bigz') object of length 10:
    [1] 1 1 2 3 4 5 6 1 1 1
>  
>v3
长度为10的大整数('bigz')对象:
[1] 1 1 2 3 4 5 6 1 1 1
>  

我通常使用给定的模式和长度声明向量,但当我尝试使用
bigz
向量执行此操作时,如:
v4,您可以使用
c
函数组合
bigz
对象列表:

bigz.list <- list(
  as.bigz(1),
  as.bigz(1),
  as.bigz(2:6),
  as.bigz(rep(1,3)))

> do.call(c, bigz.list)
Big Integer ('bigz') object of length 10:
 [1] 1 1 2 3 4 5 6 1 1 1
bigz.list do.call(c,bigz.list)
长度为10的大整数('bigz')对象:
[1] 1 1 2 3 4 5 6 1 1 1

您可以使用
c
功能组合
bigz
对象列表:

bigz.list <- list(
  as.bigz(1),
  as.bigz(1),
  as.bigz(2:6),
  as.bigz(rep(1,3)))

> do.call(c, bigz.list)
Big Integer ('bigz') object of length 10:
 [1] 1 1 2 3 4 5 6 1 1 1
bigz.list do.call(c,bigz.list)
长度为10的大整数('bigz')对象:
[1] 1 1 2 3 4 5 6 1 1 1