2

我正在尝试使用 R 包分解方阵,irlba但收到以下消息:

“V[, 1:(k + dim(F)[2])] <- cbind(V[, 1:(dim(Bsvd$v)[1]) 中的错误,drop = FALSE] %*% : number要替换的项目数不是替换长度的倍数"

然而,用svdor分解矩阵。eigen我在其他地方发现这篇文章暗示了同样的问题(没有回应)。

我将感谢任何可以帮助我解决这个问题的人!

代码:

library(irlba)

C.i <- structure(c(0.107821513562202, 0.0629415996952743, -0.0346069282137902, 
-0.0410208578535759, 0.0629415996952743, 0.136205395050303, -0.00378166611862939, 
0.00237156895349009, -0.0346069282137902, -0.00378166611862939, 
0.0122114763151942, -0.00635448918784993, -0.0410208578535759, 
0.00237156895349009, -0.00635448918784993, 0.0431193044924), .Dim = c(4L, 4L), 
.Dimnames = list(c("Sepal.Length", "Sepal.Width", "Petal.Length",
"Petal.Width"), c("Sepal.Length", "Sepal.Width", "Petal.Length", 
"Petal.Width")))

irlba(C.i, nu=1, nv=1)

# These work
svd(C.i)
eigen(C.i)
4

2 回答 2

1

我得到irlba(C.i, nu=0, nv=0)

$d
[1] 0.1938809

$u
           [,1]
[1,]  0.6595482
[2,]  0.7216141
[3,] -0.1355695
[4,] -0.1609040

$v
           [,1]
[1,]  0.6590202
[2,]  0.7214017
[3,] -0.1432499
[4,] -0.1573256

$iter
[1] 1

$mprod
[1] 6

这是你要找的吗?

(很抱歉在答案中提出问题,但我没有足够的分数来评论这个问题。:|)

于 2014-09-07T21:44:07.413 回答
0

我收到了包作者关于该错误的回复 - 这确实是一个错误。此问题已通过 irlba 软件包的更新版本得到解决。更新后的包最终将提交给 CRAN,但同时您可以通过 GitHub 安装:

remove.packages("irlba")
library("devtools")
install_github("IRL","bwlewis",quick=TRUE)

library("irlba")

C.i <- structure(c(0.107821513562202, 0.0629415996952743, -0.0346069282137902, 
-0.0410208578535759, 0.0629415996952743, 0.136205395050303, -0.00378166611862939, 
0.00237156895349009, -0.0346069282137902, -0.00378166611862939, 
0.0122114763151942, -0.00635448918784993, -0.0410208578535759, 
0.00237156895349009, -0.00635448918784993, 0.0431193044924), .Dim = c(4L, 4L), 
.Dimnames = list(c("Sepal.Length", "Sepal.Width", "Petal.Length",
"Petal.Width"), c("Sepal.Length", "Sepal.Width", "Petal.Length", 
"Petal.Width")))

irlba(C.i, nu=1, nv=1)

#$d
#[1] 0.1938898
#
#$u
#           [,1]
#[1,]  0.6593389
#[2,]  0.7216000
#[3,] -0.1349355
#[4,] -0.1623519
#
#$v
#           [,1]
#[1,]  0.6593384
#[2,]  0.7216001
#[3,] -0.1349364
#[4,] -0.1623526
#
#$iter
#[1] 2
#
#$mprod
#[1] 10
于 2014-09-14T18:25:08.810 回答