问题描述
我正在阅读R中的Matrix软件包的指令.但是我无法理解函数中的p
参数:
I'm reading through instructions of Matrix package in R. But I couldn't understand the p
argument in function:
sparseMatrix(i = ep, j = ep, p, x, dims, dimnames,
symmetric = FALSE, index1 = TRUE,
giveCsparse = TRUE, check = TRUE)
根据 http://stat. ethz.ch/R-manual/R-devel/library/Matrix/html/sparseMatrix.html
我认为p
用于行或列索引的压缩表示,因为在i
或j
中具有多个元素以具有相同的值来表示单个行/列是浪费的.但是当我尝试提供的示例时,我仍然无法弄清楚p
如何控制x
的哪个元素到达哪个行/列
I figured p
is for compressed representation of either the row or column indices because it's wasteful to have multiple elements in either i
or j
to have the same value to represent a single row/column. But when I tried the example provided, I still couldn't figure out how p
is controlling which element of x
goes to which row/column
dn <- list(LETTERS[1:3], letters[1:5])
## pointer vectors can be used, and the (i,x) slots are sorted if necessary:
m <- sparseMatrix(i = c(3,1, 3:2, 2:1), p= c(0:2, 4,4,6), x = 1:6, dimnames = dn)
推荐答案
只需在?SparseMatrix
中深入一点,以了解p
的解释方式. (尤其要注意p
的扩展形式".)
Just read a bit farther down in ?SparseMatrix
to learn how p
is interpreted. (In particular, note the bit about the "expanded form" of p
.)
这是一个小功能,可以帮助您了解在实践中意味着什么:
Here is a little function that will help you see what that means in practice:
pex <- function(p) {
dp <- diff(p)
rep(seq_along(dp), dp)
}
## Play around with the function to discover the indices encoded by p.
pex(p = c(0,1,2,3))
# [1] 1 2 3
pex(p = c(0,0,1,2,3))
# [1] 2 3 4
pex(p = c(10,11,12,13))
# [1] 1 2 3
pex(p = c(0,0,2,5))
# [1] 2 2 3 3 3
pex(p = c(0,1,3,3,3,3,8))
# [1] 1 2 2 6 6 6 6 6
这篇关于R构造稀疏矩阵的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!