为R中的以下向量创建矩阵



向量在对某个数字x进行素数分解后包含以下数值数据:

c  <- c(2,2,2,3) 

这是24 的素数分解

矩阵的第一列应包含素数2和3第二列应该包含素数的幂。

例如

| 2  3 |
| 3  1 |

我该如何创建这个矩阵呢。

使用tabulate:

f <- as.integer(gmp::factorize(24))
cnts <- tabulate(f)[-1]
matrix(c(unique(f), cnts[cnts > 0L]), ncol = 2)
#>      [,1] [,2]
#> [1,]    2    3
#> [2,]    3    1

或使用table:

f <- table(as.integer(gmp::factorize(24)))
matrix(c(as.integer(names(f)), f), ncol = 2)
#>      [,1] [,2]
#> [1,]    2    3
#> [2,]    3    1

这里是一个基本的R选项,通过定义一个函数来分解一个整数,例如

f <- function(n) {
k <- 2
v <- c()
while (k <= n) {
if (n %% k == 0) {
v <- c(v, k)
n <- n / k
} else {
k <- k + 1
}
}
as.data.frame(table(v))
}

你会看到,例如

> f(24)
v Freq
1 2    3
2 3    1
> f(46788)
v Freq
1   2    2
2   3    1
3   7    1
4 557    1

最新更新